Seguro que muchos ya conocéis este truco, pero para quien no, esta es una forma de comprobar diferentes valores para un mismo atributo en un test de unidad y comprobar que en todos los casos se cumple que es válido o no:


 def test_invalid_phone
   ['','abc','+341112233','123456789','123'].each do |phone|
     @m.phone = phone
     assert !@m.valid?     
     assert @m.errors.invalid?(:phone)
   end
 end

¿Tenéis algún truco más a la hora de realizar tests de unidad?

Yo sólo tengo que añadir que me gusta hacer dos tests por validación indicada en el modelo: una para casos positivos en el que es válido el atributo y otro para casos negativos, en los que se comprueban todos los valores que hacen el atributo no válido.