Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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是否有一个内置的匹配器来查看字符串是一个值还是另一个值?_Ruby On Rails_Rspec_Rspec Rails - Fatal编程技术网

Ruby on rails RSpec是否有一个内置的匹配器来查看字符串是一个值还是另一个值?

Ruby on rails RSpec是否有一个内置的匹配器来查看字符串是一个值还是另一个值?,ruby-on-rails,rspec,rspec-rails,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| ma

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

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"])
您可以这样尝试:

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

有关更多复合期望,您可以访问

已经回答了:。|[array]。应该包括(word)这是另一个问题。我的问题不限于使用数组作为匹配值。M.Karim提供了一个更短、更优雅的更好的解决方案。谢谢。
actual==expected.first或expected.last
顺便说一句,这与您认为的不同。@marflar您是对的。我在irb上测试了它,它没有回答正确或错误。(虽然它返回了一个真实的对象,因此它“起了作用”)谢谢你的洞察力