RSpec。并阻止期望

时间:2015-03-05 21:19:35

标签: rspec

我尝试使用阻止期望来组合两个自定义匹配器。

这是一个例子:

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只调用一次,为什么奇怪的嵌套? 有没有办法实现我想要的而不重复阻止?

1 个答案:

答案 0 :(得分:1)

正如在this reported issue中指出的那样,and并不意味着那样,并且不应该使用匹配器来改变主题的行为(正如我试图做的那样)。