0

我正在测试更新时用户模型不需要电子邮件。

使用 FactoryGirl:

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

测试通过。

应该:

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

有人对为什么会出现这种差异有任何想法吗?

4

1 回答 1

2

我认为这就是正在发生的事情。

should_not测试使用User.new. 为了测试update这个主题,必须先保存它,但是保存会导致错误,因为create. 解决方法是创建/保存一个有效的用户对象并should_not validate_presence_of(...).on(:update)显式调用该对象。

请参阅相关的应该:测试 validates_presence_of :on => :update

于 2013-07-24T19:47:09.267 回答