我有一个rspec测试,我想确保只有两个值可以传递给我的实例变量。我注意到带有块的should satisfy
似乎是更可接受的测试两种结果可接受的方式,但我想实现expect().to eq()
,如下图所示:
it "only allows -2 or 2 as values" do
expect (@note.value).to eq(2 or -2)
end
这是我正确的rspec测试的正确语法吗?我理解should
声明背后的想法,并且我更关注为什么should
更适合使用expect .to eq
(如果实际情况如此)复合期望。
谢谢。
答案 0 :(得分:7)
你可以or
两个匹配者:
ruby
expect(@note.value).to eq(2).or eq(-2)
欲了解更多信息:
http://rspec.info/blog/2014/01/new-in-rspec-3-composable-matchers/#compound-matcher-expressions
答案 1 :(得分:2)
如another question中所述,您可以反过来执行此操作,并在expect
子句中包含可能的值。使用new matcher syntax,这将是这样的:
expect([2, -2]).to include(@note.value)
我还应该提一下,你通常希望在测试中避免这种随机性。准确地说明你的期望!