Это на самом деле не характеристика вашей тестовой среды, а скорее ActiveRecord.
При создании объекта с ActiveRecord вы можете назначить проверки, чтобы гарантировать определенные вещи об атрибутах объектов (как у вас на вашем объекте). Однако эти проверки запускаются только в определенное время, и, как вы заметили, «новый» метод не является одним из таких. Тем не менее, спрашивая о действительности объекта с недействительным? Таким образом, вы вызвали проверки.
Я думаю, что может быть более естественным является использование метода «create» вместо «new» для запуска проверок вашего объекта. создавать проверки проверок автоматически, что исключит ваш вызов "недействительным?" в вашем тесте и все равно должен заполнить хэш ошибок как нужно:
product = Product.create(:title => "My lady",
:description => "yyy",
:price => 1
)
assert_equal "must be atleast 10 characters long.", product.errors[:title].join('; ')
По аналогии с методом create создается create! метод, который на самом деле вызовет исключение в случае неудачной проверки. create просто вернет false и заполнит хеш ошибки.
Для получения дополнительной информации о проверках проверьте:
http://guides.rubyonrails.org/active_record_validations_callbacks.html