【发布时间】:2016-02-22 16:25:15
【问题描述】:
这似乎有点傻,但我刚刚开始使用 Rspec,遵循 Everyday Rails Testing with RSpec 教程。
我有一个 Review 模型,它有一个布尔列 recommended:
Class Review < ActiveRecord::Base
validates_inclusion_of :recommended, :in => [true, false], message: "recommended not a boolean value"
end
所以我编写了一个基本的 Rspec 测试来确保用户无法使用 nil 值进行保存:
it "is invalid without a non-boolean recommended value" do
review = Review.new(recommended: nil)
review.valid?
expect(review.errors[:recommended]).to include("not a boolean value")
end
但是,Rspec 未通过测试。终端说:
1) Review is invalid without a non-boolean recommended value
Failure/Error: expect(review.errors[:recommended]).to include("not a boolean value")
expected ["recommended not a boolean value"] to include "not a boolean value"
# ./spec/models/destination_review_spec.rb:36:in `block (2 levels) in <top (required)>'
第二行让我很困惑:expected ["recommended not a boolean value"] to include "not a boolean value",因为子字符串包含在错误消息中。我编写的其他测试都没有出现此错误。
有人可以向我解释为什么会失败吗?
【问题讨论】:
标签: ruby-on-rails unit-testing rspec