Tests de unidad: testeando relaciones entre modelos
Los tests de unidad son tests sobre el modelo de datos, tanto atributos, como métodos del modelo, como relaciones (que al final todo son métodos, pero bueno).
Si lo que queremos testear es una relación con otro modelo, podemos utilizar combinaciones de asserts.
Si nuestros modelos son:
class Foo < ActiveRecord::Base
belongs_to :bar
end
class Bar < ActiveRecord::Base
has_many :foos
end
El test de unidad de Bar podría contener este test sobre la relación:
def test_foos
bar = Bar.find(1)
# testeamos que responde al método :foos
assert_respond_to bar, :foos
# testeamos que :foos devuelve un Array
assert bar.foos.is_a? Array
# testeamos que :foos es un Array de Foo
assert !bar.foos.empty?
assert bar.foos.first.is_a? Foo
end
Es sólo una propuesta, y es artesanal 100%, pues ya se sabe que para esto de los tests no hay reglas fijas, sino experiencias personales sobre qué resulta más efectivo.
Así que se proponen sugerencias.
