这是最终起作用的内容:
# 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。
正确的方法是什么?
您可以仅将stub new
方法用于测试块或整个规格文件: