【问题标题】:How to test if method gets called using MiniTest::Mock如何使用 MiniTest::Mock 测试方法是否被调用
【发布时间】:2012-08-19 04:04:05
【问题描述】:

我想测试当我将 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

【问题讨论】:

    标签: ruby testing mocking minitest


    【解决方案1】:

    你可以这样做:

      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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      相关资源
      最近更新 更多