RSpec mock code block 的方法

想要跳過 code block 發生之前的行為,直接測試 code block 的內容,萬能的 RSpec 當然可以做到。

MarsMars閱讀 1 分鐘
RSpec mock code block 的方法

假設在 Abc class 定義了有 code block 的 method foo,想測試 foo 的 code block ,但需要跳過 foo 的執行:

class Abc
  def foo(x, y)
    ...
    yield(m, n)
    ...
  end
  
  def bar
    foo(x, y) do |m, n|
      # 想要測試這裡面的執行結果
    end
  end
end

RSpec 如下

allow(Abc).to receive(:foo) do |x, y, &block|
  ....
  block.call(m, n)
  ....
end
Abc.new.bar
Mars
關於作者Mars自由接案工程師 | Ruby on Rails

自由接案者、Ruby on Rails 工程師、水肺潛水員、業餘羽球、二胡、鋼琴愛好者。喜歡貓、狗。

延伸閱讀