【问题标题】:Stub and Mock Minitest存根和模拟 Minitest
【发布时间】:2017-02-14 19:37:27
【问题描述】:

我正在尝试实施和学习测试(似乎 minitest 是要走的路)。而且我在测试内部模块类方法时失败了。

这或多或少是我想要做的用例。 (也许我的做法完全错误)

module Zombie
  class << self
    # This is the method/code I want to test/execute
    def intimidate
      roar('slardar')
    end

    # This is the method that is internal, that I want to stub.
    # Actual method(not this mocked one) is stateful. So I want to have 
    # mocked predefined data. 
    def roar(a)
      'rawrger' + a
    end
  end
end

# Test Thingy
class ZombieTest < Minitest::Test
  def test_mr_mock
    @mock = Minitest::Mock.new
    @mock.expect(:roar, 'rawrgerslardar', ['slardar'])
    Zombie.stub :roar, @mock do
      Zombie.intimidate
    end
    @mock.verify
  end
end

【问题讨论】:

    标签: ruby minitest


    【解决方案1】:

    您可以使用 lambda 来传递参数:

    class ZombieTest < Minitest::Test
      def test_mr_mock
        @mock = Minitest::Mock.new
        @mock.expect(:roar, 'rawrgerslardar', ['slardar'])
        Zombie.stub :roar, ->(a) { @mock.roar(a) } do
          Zombie.intimidate
        end
        @mock.verify
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2014-12-28
      • 1970-01-01
      • 2012-07-27
      相关资源
      最近更新 更多