如何在 RSpec 等式匹配器 (Rails) 中使用 `or`
How to use `or` in RSpec equality matchers (Rails)
我正在尝试做类似
的事情
expect(body['classification']).to (be == "Apt") || (be == "House")
背景:
这是在测试 JSON API 响应。
问题:
如果返回 "Apt" 或 "House",我希望测试通过。但在测试中,它仅与第一个值 "Apt".
进行比较
Failure/Error: expect(body['classification']).to be == "Apt" or be == "House"
expected: == "Apt"
got: "House"
上一个解法:
这里有一个解决方案,
(Equality using OR in RSpec 2) 但它现在贬值了,我无法让它发挥作用。
文档:
也无法在文档中找到这样的示例 (https://www.relishapp.com/rspec/rspec-expectations/v/3-4/docs/built-in-matchers/equality-matchers)
这可以吗?
这个怎么样:
expect(body['classification'].in?(['Apt', 'Hourse']).to be_truthy
或者
expect(body['classification']).to eq('Apt').or eq('Hourse')
甚至这样:
expect(body['classification']).to satify { |v| v.in?(['Apt', 'Hourse']) }
expect(body['classification']).to eq("Apt").or eq("House")
基于此link
"复合预期。
匹配器可以使用 and or or 组成复合期望
使用or
链接预期
RSpec.describe StopLight, "#color" do
let(:light) { StopLight.new }
it "is green, yellow or red" do
expect(light.color).to eq("green").or eq("yellow").or eq("red")
end
我正在尝试做类似
的事情expect(body['classification']).to (be == "Apt") || (be == "House")
背景:
这是在测试 JSON API 响应。
问题:
如果返回 "Apt" 或 "House",我希望测试通过。但在测试中,它仅与第一个值 "Apt".
进行比较Failure/Error: expect(body['classification']).to be == "Apt" or be == "House"
expected: == "Apt"
got: "House"
上一个解法:
这里有一个解决方案, (Equality using OR in RSpec 2) 但它现在贬值了,我无法让它发挥作用。
文档:
也无法在文档中找到这样的示例 (https://www.relishapp.com/rspec/rspec-expectations/v/3-4/docs/built-in-matchers/equality-matchers)
这可以吗?
这个怎么样:
expect(body['classification'].in?(['Apt', 'Hourse']).to be_truthy
或者
expect(body['classification']).to eq('Apt').or eq('Hourse')
甚至这样:
expect(body['classification']).to satify { |v| v.in?(['Apt', 'Hourse']) }
expect(body['classification']).to eq("Apt").or eq("House")
基于此link
"复合预期。
匹配器可以使用 and or or 组成复合期望
使用or
链接预期
RSpec.describe StopLight, "#color" do
let(:light) { StopLight.new }
it "is green, yellow or red" do
expect(light.color).to eq("green").or eq("yellow").or eq("red")
end