给定这个类:
class First
def to_s ; "Hello World" ; end
end
和这个规范:
require 'first'
describe First do
describe "#to_s" do
it { should == "Hello World" }
end
end
我得到:
Failures:
1) First#to_s
Failure/Error: it { should == "Hello World" }
expected: "Hello World"
got: Hello World (using ==)
Diff:
@@ -1,2 +1,2 @@
-"Hello World"
+Hello World
# ./spec/first_spec.rb:5:in `block (3 levels) in <top (required)>'
但我希望这会过去。我的问题是:
- 合格的规范会是什么样子?
- 为什么这个规范没有通过,特别是?
最佳答案
你的外部 describe
block :
describe First do
设置内部例子的主题to be an instance of 首先
。也就是说,您描述的所有 it
都将是一个 First
对象。文本 #to_s
示例不指示 rspec 在对象上调用 to_s
。
由于 First.new
不等于 "Hello World"
规范失败。
但是,由于 rspec 确实调用了对象上的 to_s
以在故障描述中输出它,因此“Hello World”确实出现在那里。您可以尝试以下操作以确保正在测试字符串转换:
its(:to_s) { should == "Hello World" }
关于ruby-on-rails - 为什么这个简单的 RSpec 字符串相等规范会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778657/