用模拟在前块修补猴子

问题描述 投票:0回答:1

这是最终起作用的内容:

# lib file
module SlackWrapper
  class << self
    def client
      @client ||= ::Slack::Web::Client.new
    end
  end
end

# test file
before :each do
  $mock_client = double("slack client").tap do |mock|
    allow(mock).to receive(:channels_info) { channel_info }
  end

  module SlackWrapper
    class << self
      def client
        $mock_client
      end
    end
  end
end

绝对感觉不对。但是,在运行测试时,将$mock_client保留为本地变量会给我undefined local variable,将double...代码移到Monkeypatch中会得到undefined method。当然还有monkeypatching。

正确的方法是什么?

ruby rspec
1个回答
0
投票

您可以仅将stub new方法用于测试块或整个规格文件:

© www.soinside.com 2019 - 2024. All rights reserved.