Mat*_*ieu 12 rspec ruby-on-rails rspec3
由于我更新了我的Gemfile并转移到rspec 3,在许多测试中,我收到错误:way:
it "should reject attribute that are too short" do
short = "a" * 3
hash = @attr.merge(:details => short)
Deal.new(hash).should have(1).error_on(:details)
end
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Failure/Error: Deal.new(hash).should have(1).error_on(:details)
NoMethodError:
undefined method `have' for #<RSpec::ExampleGroups::Deal_2::TestsOnDealsModelsValidations>
Run Code Online (Sandbox Code Playgroud)
我读过我现在应该使用"expect"而不是应该但是have(1).error_on,我应该如何编写它以符合rspec 3?
我尝试了以下但它仍然无法正常工作:
it "should reject attribute that are too short" do
short = "a" * 3
hash = @attr.merge(:details => short)
expect(Deal.new(hash).error_on(:details).size).to eq(1)
end
Run Code Online (Sandbox Code Playgroud)
Eer*_*ero 18
我已经取代了喜欢的
Deal.new(hash).should have(1).error_on(:details)
Run Code Online (Sandbox Code Playgroud)
同
deal = Deal.new(hash)
expect(deal.valid?).to be_falsey
expect(deal.errors[:details].size).to eq(1)
Run Code Online (Sandbox Code Playgroud)
在valid?初始化errors列表时,第一个期望是必要的.
have和其他类似的匹配器已经从rspec核心转移到另一个gem,rspec-collection-matchers.
我建议遵循rspec 2 - > 3的升级路径,详见rspec docs:https : //relishapp.com/rspec/docs/upgrade
如果你这样做了,那么你的代码就会收到一个弃用错误,它也会告诉你如何修复它.
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |