Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RSpec相等匹配器(Rails)中使用`or`_Ruby On Rails_Rspec Rails - Fatal编程技术网

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