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上测试了它,它没有回答正确或错误。(虽然它返回了一个真实的对象,因此它“起了作用”)谢谢你的洞察力