使用 RSpec 验证属性的存在

Jul*_*ira 5 rspec-rails rspec3

我的模型中的某些属性具有存在验证,我想在我的规范中添加测试以检查当属性为空时是否生成错误。

我正在使用此代码:

it 'should have a name' do
    expect(@patient.errors[:name].size).to eq(1)
end
Run Code Online (Sandbox Code Playgroud)

但这是 rspec 命令的结果:

失败:

  1) 患者应有姓名
     失败/错误:expect(@patient.errors[:name].size).to eq(1)

       预期:1
            得到:0

       (比较使用 ==)
     # ./spec/models/patient_spec.rb:11:in `block (2 levels) in '

在 0.03002 秒内完成(文件需要 40.54 秒加载)
1个例子,1个失败

失败的例子:

rspec ./spec/models/patient_spec.rb:10 # 患者应该有一个名字

Jul*_*ira 5

我发现了我的错误。我需要致电@ Patient.valid 吗?在检查错误之前。

it 'has a name' do
    @patient.valid?
    expect(@patient.errors[:name].size).to eq(1)
end
Run Code Online (Sandbox Code Playgroud)


Tod*_*odd 5

使用shoulda,您可以在一行简单的代码中完成此操作:

Describe Patient do
  it { should validate_presence_of(:name) }
end
Run Code Online (Sandbox Code Playgroud)