Элегантный метод для проверки validates_associated в модульных тестах Rails? - PullRequest
1 голос
/ 05 июня 2009

Похоже, это можно найти с помощью нескольких поисков в Google ... но не повезло.

Я ищу элегантный подход к тестированию validates_associated в моих моделях, например ...

class Network < ActiveRecord::Base
...
  validates_associated :transporter
...
end

И тест:

class NetworkTest < ActiveSupport::TestCase
  test 'should not create network without valid transporter' do
    network = Factory.build(:network)
    assert...?
  end
end

1 Ответ

1 голос
/ 07 июня 2009

Factory.build может не запустить тест проверки (тест проверки выполняется при сохранении, а не при создании).

Однако, в общем случае для валидации вы должны сделать что-то вроде

assert !network.valid?
assert network.errors.invalid?(:transporter)

Обратите внимание, что я склонен делать это на уровнях модельного теста (юнит-теста) - я проверяю результат того, что что-то недопустимо на уровнях функций и интеграции.

...