Estructurar test unitarios con los contextos de Shoulda

Hola,

¿qué tipo de guión seguís para estructurar contextos en tests
unitarios con shoulda?

En test funcionales, utilizo un contexto por petición (‘on get to
:new’, etc.) , encapsulando a estos un contexto para el estado del
usuario (‘a logged user’). Me parece una estructura muy clara y que me
hace empezar a crear los tests un poco en piloto automático (al menos
hasta que investigue should_be_restful y elimine el 80% de esto)

¿Para los test unitarios utilizáis algún tipo de estructura de
contextos que sirva al menos para el 80/20?


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.

Hombre,

pues no lo había pensado pero ahora que lo dices creo que es algo
másdifícil poder estructurar los tests unitarios por contextos.

Por ejemplo sí que puede ser útil en determinados casos: por ejemplo
cuando testeas las validaciones y defines en el contexto un objeto con
todos sus atributos pero que no haya sido guardado.

Pero claro, no es uno 80/20, sino casi al revés.

2008/7/11 Manuel González Noriega [email protected]:

¿Para los test unitarios utilizáis algún tipo de estructura de
contextos que sirva al menos para el 80/20?

Yo no tengo un patrón claro sino que suelo optar por el “crecimiento
orgánico” (como para casi todo, por otra parte). Es decir, en
principio no estructuro, y cuando detecto cosas repetidas entre varios
tests, refactorizo: agrupo todos esos tests en un contexto cuyo setup
es la parte repetida. El típico ejemplo que no vale para nada porque
es el que tú has puesto:

should “no sé qué” do
login_as :manu
assert_no_sé_qué
end
should “no sé qué” do
login_as :manu
assert_no_sé_qué
end
should “no sé qué” do
login_as :manu
assert_no_sé_qué
end

lo conviertes en:

context “logged as manu” do
setup do
login_as :manu
end
should “no sé qué” do
assert no sé qué
end
should “no sé qué” do
assert no sé qué
end
should “no sé qué” do
assert no sé qué
end
end

Y ya te aplicas ese patrón de refactorización a tu test unitario =;-)

Una pista que yo uso: de manera ideal (ya digo, ideal, es bastante
raro que la cumpla a rajatabla pero intento no alejarme demasiado),
intento que toda la “acción” esté en los bloques setup, y los should
sólo contengan aserciones. Pero no sé si es lo correcto.


Sergio Gil Pérez de la Manga
e-mail > [email protected]
blog > http://www.lacoctelera.com/porras