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.

9 Abr 2007 | 10:10 AM
Pues justamente el otro día hablabamos en el RubyGym de algo que yo creo que es similar: comprobar que validan los feeds generados por FeedTools.
¿no podemos asumir que esos tests ya forman parte de la "suit" de dichos desarrollos (ActiveRecord en el caso que tú comentas o FeedTools en este otro)?
Creo que lo ideal es centrarse en la funcionalidad que resuelve tu código y confiar en la que te ofrece el de otros. Imagínate sino lo que significaría testear todas las dependencias de tu proyecto. Con la de veces que los lanzamos al cabo del día... nos hacíamos del club del pitillo, que no?