2014-03-27 37 views
3

使用摩卡,我試圖嘲笑調用模塊方法的控制器方法。 這是一個集成測試。NoMethodError:未定義方法`存根'爲ModuleX:模塊

例子:

class Controller < ApplicationController 
    def method1 
    response = Module1.method2(... 

我到此爲止:

  • 新增摩卡到Gemfile中
  • 新增require 'mocha/mini_test'我 test_helper.rb中的最底部
  • 嘗試這種代碼在發送郵件給我的控制器之前進行集成測試:

    Module1.stub(:method2).returns(:true) post "controller/method1"

  • 而得到這個錯誤:

    NoMethodError: undefined method 'stub' for Module1:Module

是否有可能存根方法2?

編輯:所以主要的修復方法是'存根'而不是'存根'。儘管如此,我仍然無法嘲笑這個dang模塊。

編輯:Rails和MiniTest即使在我將它存根後調用模塊方法。 Rails是否可能覆蓋我的存根?

class Test < ActionDispatch::IntegrationTest 

test "test do 

Module1.stubs(:method2).returns(:true) 
post "controller/method1" 

此測試導致method2內部錯誤未傳入參數。測試表現爲好像該方法未被樁住。

回答

2

嘗試.stubs與s。

stub表示法將構建您稍後將使用的存根。 直接在某物上存根方法時添加s。

+0

所以,您的建議已解決我的第一個問題;不過,我仍然無法嘲笑這種方法。 Rails和MiniTest甚至在我將它存根後調用模塊方法。 Rails是否可能覆蓋我的存根? –

1

關於你的測試,你可能需要一個

Module1.expects(:method2) 

但短線應該反正工作。 Rails不會覆蓋你的存根,也許你是test_helper,但我確定它更多的是一種語法。

粘貼您的真實代碼和測試,因爲這裏的權利知道它是一種困難的,可以是任何東西...... preveting方法的回調被調用,測試語法,...

相關問題