如何创建以下RSpec匹配器?
foo.bars.should incude_at_least_one {|bar| bar.id == 42 }
Run Code Online (Sandbox Code Playgroud)
让我知道如果我重新发明轮子,但我也很想知道如何创建一个自定义匹配器.一些内置的匹配器可以做到,所以它是可能的.我试过这个:
RSpec::Matchers.define :incude_at_least_one do |expected|
match do |actual|
actual.each do |item|
return true if yield(item)
end
false
end
end
Run Code Online (Sandbox Code Playgroud)
我也尝试过&block两个人.我想念一些简单的东西.
关于将这样的匹配器添加到 rspec 中已经存在讨论。我不确定你的块问题,但你可以用不那么优雅的外观来表示这个测试:
foo.bars.any?{|bar| bar.id == 42}.should be_true
Run Code Online (Sandbox Code Playgroud)
可能比制作自定义匹配器更容易,并且如果您的测试类似于it "should include at least one foo matching the id"
| 归档时间: |
|
| 查看次数: |
887 次 |
| 最近记录: |