Ruby on rails 如何在RSpec相等匹配器(Rails)中使用`or`
我正试着做类似的事情Ruby on rails 如何在RSpec相等匹配器(Rails)中使用`or`,ruby-on-rails,rspec-rails,Ruby On Rails,Rspec Rails,我正试着做类似的事情 expect(body['classification']).to (be == "Apt") || (be == "House") 背景: 这是测试JSON API响应 问题: 如果返回“Apt”或“House”,我希望测试通过。但在测试中,它只是与第一个值“Apt”进行比较 以前的解决方案: 这里有一个解决方案, 但是现在它贬值了,我没能让它运转起来 文档: 在文档中也找不到类似的示例() 这可能吗?这个怎么样: expect(body['classification
expect(body['classification']).to (be == "Apt") || (be == "House")
背景:
这是测试JSON API响应
问题:
如果返回“Apt”或“House”,我希望测试通过。但在测试中,它只是与第一个值“Apt”进行比较
以前的解决方案:
这里有一个解决方案,
但是现在它贬值了,我没能让它运转起来
文档:
在文档中也找不到类似的示例()
这可能吗?这个怎么样:
expect(body['classification'].in?(['Apt', 'Hourse']).to be_truthy
或
甚至这个:
expect(body['classification']).to satify { |v| v.in?(['Apt', 'Hourse']) }
基于此,
“复合期望值
可以使用and或or组合匹配器以生成复合期望
使用或
链接期望”
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")
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