2016-05-31 43 views
2

编辑:,提供化合物匹配的答案是一个更优雅的解决方案:RSpec有一个内置的匹配器来查看一个字符串是一个值还是另一个值?

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

已经回答了:http://stackoverflow.com/questions/15143723/rspec-string-should-be-in-array。 | [数组]。应该包括(字) – tebayoso

+0

这是一个不同的问题。我的问题并不局限于使用数组作为匹配值。 M.Karim提供了更短,更优雅的更好解决方案。谢谢。 –

+0

'实际== expected.first或expected.last'这不会做你认为它的方式。 – stephenmurdoch

回答

4

你可以尝试这样的:

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

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

+0

这是完美的谢谢你的链接。 –

+0

快乐是我的(y) –

相关问题