由于我更新了Gemfile并将其移至rspec 3,因此在许多测试中,我遇到了以下错误:
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
我收到此错误:
Failure/Error: Deal.new(hash).should have(1).error_on(:details)
NoMethodError:
undefined method `have' for #<RSpec::ExampleGroups::Deal_2::TestsOnDealsModelsValidations>
我读到我现在应该使用“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
最佳答案
我已经取代了
Deal.new(hash).should have(1).error_on(:details)
和
deal = Deal.new(hash)
expect(deal.valid?).to be_falsey
expect(deal.errors[:details].size).to eq(1)
对
valid?
的第一个期望是必要的,因为它会初始化errors
列表。关于ruby-on-rails - 升级到rspec 3时使用应有错误(1).error_on,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24096280/