gpt4 book ai didi

ruby - 如何使用 Mocha 在 Controller 中 stub 模块方法

转载 作者:行者123 更新时间:2023-12-05 03:04:08 25 4
gpt4 key购买 nike

我有一个像这样的 Sinatra 应用程序:

我的模块.rb

module MyModule
def my_method
"yay"
end
end

应用.rb

get "/my_module" do 
puts my_method
end

我正在尝试使用 Minitestmochamy_method 进行测试。

def test_my_method
MyModule.stubs(:my_method).returns("stubbed")
get "/my_module"
end

但这似乎不起作用,因为仍然调用了原来的方法。关于如何执行此操作的任何想法?谢谢!

最佳答案

我找到了两种不同的方法来实现这一目标。

1) 使用 stub any instance gem .

有了这个 gem,我可以 stub Sinatra::Application 的任何实例。所以解决方案看起来像这样:

def test_my_method
Sinatra::Application.stub_any_instance(:my_method, "stubbed") do
get "/my_module"
# => stubbed
end
end

2) 使用 mochaany_instance .

这个解决方案遵循相同的原则。只需使用 mocha 的方法。

def test_my_method
Sinatra::Application.any_instance.stubs(:my_method).returns("stubbed")
get "/my_module"
# => stubbed
end

关于ruby - 如何使用 Mocha 在 Controller 中 stub 模块方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com