2013-07-24 2 views
0

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

С FactoryGirl:

u = FactoryGirl.create(:user) 
u.email = nil 
expect(u.save).to be_true 

Испытание проходит.

С Shoulda:

should_not validate_presence_of(:email).on(:update) 

тест с ошибкой:

Failure/Error: should_not validate_presence_of(:email) 
Did not expect errors to include "can't be blank" when email is set to nil, got error:  can't be blank 

Кто-нибудь есть какие-либо мысли о том, почему происходит такое несоответствие?

ответ

2

Я думаю, что это то, что происходит.

Тест использует User.new. Чтобы проверить update на эту тему, он должен быть сначала сохранен, но сохранение приведет к ошибке из-за проверки на create. Обходной путь - создать/сохранить действительный объект пользователя и вызвать should_not validate_presence_of(...).on(:update) явно на этот объект.

Смотрите соответствующий Shoulda: Test validates_presence_of :on => :update

+1

Sorry- мне пришлось бежать и раньше. Благодарим вас за помощь и хороший ответ. Для справки я нашел .on (: update) здесь: https://github.com/thoughtbot/shoulda-matchers/issues/131 и в ссылках внутри. Еще раз спасибо. – user2517777

 Смежные вопросы

  • Нет связанных вопросов^_^