Rspec测试做它应该做的但显示失败

时间:2017-03-25 09:39:39

标签: ruby-on-rails activerecord rspec

我正在进行模型测试,如下所示:

require 'rails_helper'

RSpec.describe Demand, type: :model do
 it 'has a valid factory' do
    expect(create(:demand)).to be_valid
 end

 it 'is invalid without a parent_id' do
    expect(create(:demand, parent_id: nil)).to_not be_valid
 end
end

现在第二个测试“没有parent_id时无效”失败并显示以下消息:

Demand is invalid without a parent_id
 Failure/Error: expect(create(:demand, parent_id: nil)).to_not be_valid

 ActiveRecord::RecordInvalid:
   Validation failed: Parent can't be blank

这感觉很奇怪,因为记录告诉我它不能是空白的 - 这正是我正在测试的,不是吗?有什么建议吗?

编辑:我发现了这个错误。看看下面的答案。

1 个答案:

答案 0 :(得分:3)

如果有人犯了同样的错误,请回答:

it 'is invalid without a parent_id' do
  expect(build(:demand, parent_id: nil)).to_not be_valid
end

它需要"构建"而不是"创建"。