Почему пост провалился в моем функциональном тесте Rails? - PullRequest
5 голосов
/ 08 апреля 2009

Когда я запускаю сообщение в моем функциональном тесте Rails

setup do
  post :create, :user => Factory.attributes_for(:user)
end

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

Я пытался сделать

setup do
  post :create, :user => Factory.attributes_for(:user)
  assert_valid @controller.object
end

но объект является защищенным методом.

Как я могу проверить ошибки в модельном объекте, возникающие в результате почтового вызова?

Я пользуюсь musta и Factory Girl, но подозреваю, что это не важно.

Ответы [ 2 ]

6 голосов
/ 08 апреля 2009

Добавить следующее утверждение:

assert_nil assigns(:user).errors

Что приведет к ошибке, если при сохранении вашего объекта возникли ошибки (возможно, проверка), и покажет вам значение объекта ошибок.

0 голосов
/ 06 октября 2013

Я использую рельсы 3.2.13, и кажется, что assert_nil не работает должным образом, как указано в предыдущем ответе.

Вот что у меня сработало:

assert_empty assigns(:user).errors

Я полагаю, что это потому, что даже успешный вызов "save" возвращает объект ActiveRecord: Errors, содержащий пустой хэш "messages", так что вы также можете сделать это:

assert_empty assigns(:user).errors.messages
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...