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.