【问题标题】:Why doesn't my rspec test pass when my model validation fails as it should当我的模型验证失败时,为什么我的 rspec 测试没有通过
【发布时间】:2014-05-07 10:46:25
【问题描述】:

我的模型具有如下验证:

 # 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)>'

我的测试有什么问题?

【问题讨论】:

  • 试试account = build(:account, :empty)这个不保存到数据库

标签: ruby-on-rails rspec shoulda


【解决方案1】:

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

create 将尝试在数据库中创建记录,并通过验证。改用build

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多