如何测试是否使用 MiniTest::Mock 调用方法



我想测试当我将Foo模块包含在类中并调用"bar"时,是否调用了方法,在本例中为"puts"。

require 'minitest/autorun'
module Foo
  def bar
    puts 'bar'
  end
end
class FooTest < MiniTest::Unit::TestCase
  def setup
    @class = Class.new do
      extend Foo
    end
  end
  def test_if_bar_method_calls_puts
    mock = MiniTest::Mock.new
    mock.expect(:puts, nil, ['bar'])
    @class.bar
    assert mock.verify
  end
end

你可以做这样的事情:

  def test_if_bar_method_calls_puts
    mock = MiniTest::Mock.new
    mock.expect(:puts, nil, ['bar'])
    @class.stub :puts, -> (arg) { mock.puts arg } do
      @class.bar
    end
    assert mock.verify
  end

最新更新