当我的模型验证失败时,为什么我的rspec测试没有通过

时间:2014-05-07 10:46:25

标签: ruby-on-rails rspec shoulda

我的模型有如下验证:

 # Account Model
    validates :email, presence: true
    validates :password, presence: true

所以我为这个模型创建了一个factory_girl,其空白值如下:

 factory :account do
  end

 trait :empty do
    email ""
    password ""
  end

所以我的测试看起来像:

it "doesn't allow empty fields" do
  account = create(:account, :empty)
  account.should_not be_valid
end

所以我说这个带有空字段的模型应该通过“should_not”验证失败。

然而,当我运行rspec时,我收到了这个错误:

Validation failed: Email can't be blank, Password can't be blank
     # ./spec/models/account_spec.rb:29:in `block (3 levels) in <top (required)>'

我的测试有什么问题?

1 个答案:

答案 0 :(得分:4)

rspec错误来自此行account = create(:account, :empty),而不是此account.should_not be_valid

create将尝试在数据库中创建记录,并进行验证。使用build代替