Ruby on rails Shoulda/RSpec:确保验证消息;xxx“;在:基地
我仍然对Ruby on rails Shoulda/RSpec:确保验证消息;xxx“;在:基地,ruby-on-rails,ruby,validation,rspec,shoulda,Ruby On Rails,Ruby,Validation,Rspec,Shoulda,我仍然对it{should(1).error_on(:base)}以及什么是特定的Shoulda matcher之类的东西背后的魔力感到困惑 我想确保:base包含错误消息“xxx”,那么我应该怎么做呢 it "should contain error message 'xxx'" do contact.valid? contact.errors[:base].should include('xxx') end 这是“走的路”,还是有更好的路?谢谢。好的,看起来不错。内联rspec测试
it{should(1).error_on(:base)}
以及什么是特定的Shoulda matcher之类的东西背后的魔力感到困惑
我想确保:base
包含错误消息“xxx”,那么我应该怎么做呢
it "should contain error message 'xxx'" do
contact.valid?
contact.errors[:base].should include('xxx')
end
这是“走的路”,还是有更好的路?谢谢。好的,看起来不错。内联rspec测试使用主题。您可以这样重写测试:
describe 'my method' do
before { contact.valid? }
context 'contact is not valid' do
subject { contact.errors[:base] }
it { should include 'xxx' }
end
end
对主题调用了should方法。它有时更可读。您不必为规范编写自我解释的描述;-) 对,看起来不错。内联rspec测试使用主题。您可以这样重写测试:
describe 'my method' do
before { contact.valid? }
context 'contact is not valid' do
subject { contact.errors[:base] }
it { should include 'xxx' }
end
end
对主题调用了should方法。它有时更可读。您不必为规范编写自我解释的描述;-) 感谢使用subject和before筛选器的提示。更简洁的是:it{subject.errors[:base]。应该包含'xxx'}。error[:which]现在返回数组,因此除非您匹配整个字符串,否则include不起作用。感谢使用subject和before筛选器的提示。更简洁的是:it{subject.errors[:base]。应该包含'xxx'}。error[:whater]现在返回一个数组,因此除非匹配整个字符串,否则include不起作用。