我正在使用RSpec来测试API.我想指定一个特定端点返回一个布尔值,true或者false.这是由其他系统和语言使用的API,所以它是一个真正的布尔值,并非只是某种红宝石将评估到这一点很重要false或true.
但我没有看到这样做的方法,因为BooleanRuby中没有类型.
小智 30
expect(variable).to be_in([true, false])
Run Code Online (Sandbox Code Playgroud)
Rim*_*ian 23
我有同样的问题.这就是我想出的:
RSpec::Matchers.define :be_boolean do
match do |actual|
expect(actual).to be_in([true, false])
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅:https://www.relishapp.com/rspec/rspec-expectations/v/3-4/docs/custom-matchers
它可以像这样使用:
it 'is boolean' do
expect(true).to be_boolean
end
Run Code Online (Sandbox Code Playgroud)
fph*_*ipe 10
在最近的rspec版本中,可以使用复合匹配器:
expect(thing).to be(true).or be(false)
Run Code Online (Sandbox Code Playgroud)
如何组合以上?
RSpec::Matchers.define :be_boolean do
match do |value|
[true, false].include? value
end
end
Run Code Online (Sandbox Code Playgroud)
用法:
expect(something).to be_boolean
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14053 次 |
| 最近记录: |