我尝试使用阻止期望来组合两个自定义匹配器。
这是一个例子:
expect{puts "test"}.to matcher1.and matcher2
这些是匹配者:
RSpec::Matchers.define :matcher1 do |resource|
supports_block_expectations
match do |actual|
puts "before matcher1"
actual[]
puts "after matcher1"
true
end
end
RSpec::Matchers.define :matcher2 do
supports_block_expectations
match do |actual|
puts "before matcher2"
actual[]
puts "after matcher2"
true
end
end
我得到的输出是:
before matcher2
before matcher1
test
after matcher1
after matcher2
虽然我期待:
before matcher2
test
after matcher2
before matcher1
test
after matcher1
为什么我的proc只调用一次,为什么奇怪的嵌套? 有没有办法实现我想要的而不重复阻止?