使用Mocha,我试图模拟一个调用模块方法的控制器方法。 这是一个集成测试。
示例:
class Controller < ApplicationController
def method1
response = Module1.method2(...
到目前为止我的步骤:
require 'mocha/mini_test'
添加到我的最底层
test_helper.rb 在向我的控制器发送帖子之前,在我的集成测试中尝试了这段代码:
Module1.stub(:method2).returns(:true)
post "controller/method1"
并收到此错误:
NoMethodError: undefined method 'stub' for Module1:Module
是否可以存根方法2?
编辑:所以主要的解决方法是该方法是&#39; stubs&#39;不是&#39; stub&#39;。我虽然嘲笑这个dang模块仍然有困难。
编辑:Rails和MiniTest即使在我删除它之后也只是调用模块方法。 Rails是否有可能覆盖我的存根?
class Test < ActionDispatch::IntegrationTest
test "test do
Module1.stubs(:method2).returns(:true)
post "controller/method1"
此测试导致方法2内的错误bc没有传入任何参数。测试的行为就像方法没有被存根一样。
答案 0 :(得分:2)
使用s尝试.stubs
。
stub
符号用于构建稍后使用的存根。
直接在某个方法上存储方法时添加一个。
答案 1 :(得分:1)
关于您的测试,您可能需要
Module1.expects(:method2)
但是存根应该仍然可以工作。 Rails不会覆盖你的存根,也许你的test_helper会这样做,但我很确定它更像是一种语法。
粘贴您的真实代码并进行测试,因为这里知道它有点困难,可以是任何东西......一个回调预测要调用的方法,测试语法,......