我有一些這樣的代碼:
new_method = lambda do
puts "Hey, I'm the new method!"
redirect_to login_path
end
MyController.any_instance.stubs(:my_method).returns(new_method)
問題是它回傳 lambda,而不是呼叫它......
那么如何存根控制器方法呢?或者換一種說法,我如何存根一個方法并回傳一個要運行的塊?
uj5u.com熱心網友回復:
我沒有運氣mocha,但minitest/mock確實運行 lambda 塊,但僅適用于類方法:
require 'minitest/mock'
new_thing = lambda do
puts "hi"
end
MyController.stub :my_class_method, new_thing do
MyController.my_class_method
end
要獲取實體方法存根,您可以獲取@controller是否在控制器測驗中并存根,或者獲取另一個 gem https://github.com/codeodor/minitest-stub_any_instance,它可以讓您這樣做:
new_thing = lambda do
puts "hi"
redirect_to login_path
end
MyController.stub_any_instance :my_method, new_thing do
visit my_controller_method_path
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493236.html
