如何模拟ruby rspec中的模块静态方法?
How to mock module static method in ruby rspec?
我正在尝试编写一些 rspec 测试,我想模拟模块中的静态方法。
设置是这样的:
module MyModule
def self.my_method
'end'
end
在 rspec 里面我想模拟 my_method,像这样:
alow_any_instance_of(MyModule).to(
receive(:my_method).and_return('not_bla')
)
在工作代码中,方法是这样调用的:MyModule.my_method
当我尝试使用上面的设置时,出现以下错误:
MyModule does not implement #my_method
我在这里找到了答案:https://www.ruby-forum.com/t/modules-and-stub/168721
解决方案代码如下所示:
MyModule.stub(:my_method).and_return('not_bla')
在 RSpec 中存根消息的 new syntax 看起来像这样:
allow(MyModule).to receive(:my_method).and_return('not_bla')
不再推荐的old syntax是这样的:
MyModule.stub(:my_method).and_return('not_bla')
我正在尝试编写一些 rspec 测试,我想模拟模块中的静态方法。
设置是这样的:
module MyModule
def self.my_method
'end'
end
在 rspec 里面我想模拟 my_method,像这样:
alow_any_instance_of(MyModule).to(
receive(:my_method).and_return('not_bla')
)
在工作代码中,方法是这样调用的:MyModule.my_method
当我尝试使用上面的设置时,出现以下错误:
MyModule does not implement #my_method
我在这里找到了答案:https://www.ruby-forum.com/t/modules-and-stub/168721
解决方案代码如下所示:
MyModule.stub(:my_method).and_return('not_bla')
在 RSpec 中存根消息的 new syntax 看起来像这样:
allow(MyModule).to receive(:my_method).and_return('not_bla')
不再推荐的old syntax是这样的:
MyModule.stub(:my_method).and_return('not_bla')