RSpec是否有内置的匹配器来查看String是一个值还是另一个值?

时间:2016-05-31 00:38:24

标签: ruby-on-rails rspec rspec-rails

编辑:提供的复合匹配器答案是一个更优雅的解决方案:

expect(@weathers.get_day_today).to eq('Today').or eq('Tonight')

原始问题:

我正在测试一个值是否为"今天"或者"今晚"。有内置匹配器吗?或者比我正在做的更干净的方法?

编辑以下是我尝试进行自定义测试,但它不起作用。这是一个不做的例子。

首先,添加自定义匹配器。

RSpec::Matchers.define :be_this_or_that do |expected|
  match do |actual|
    actual == expected.first or expected.last
  end
end

其次,使用它

expect(@weathers.get_day_today).to be_this_or_that(["Today", "Tonight"])

1 个答案:

答案 0 :(得分:4)

您可以尝试这样:

expect(@weathers.get_day_today).to eq('Today').or eq('Tonight')

了解更多复合期望,您可以访问here