2012-11-09 28 views
1

所以我的情況是: 我有2個模塊具有相同的結構類似:摩卡預計方法

module Module1 
    class Config 

    def fee_rate 
     2 
    end 
    end 
end 

所以,說,單詞數將有類配置與方法fee_rate,只是用不同的值(那些在一個軌道的發動機實際實施,但它不應該的問題)

,然後我的模型可以使用模塊1或單詞數來獲得費率值這樣的:

def config 
    @config ||= "#{module_name.titleize}::Config".constantize.new 
    @config 
end 

def get_value 
    config.get_fee * some_other_value 
end 

我想要測試是如果get_fee函數被調用的正確類:

"#{model.module_name.titleize}::Config".constantize.any_instance.expects(:get_fee).at_least_once 
model.get_value 

並當我打電話的get_value行我碰到下面的錯誤 - 未定義的方法`*」的零:NilClass。我現在完全失去了,所以我會很感激任何幫助和想法。

回答

2

通過設置get_fee的期望值,您可以防止發生實際的方法調用。由於您尚未設定期望值的回報值,例如expects(:get_fee).at_least_once.returns(3)它返回零,因此錯誤消息。

您可以通過完全放棄期望並檢查是否創建了正確類型的配置類來取得更大的成功,例如,

model.get_value 
assert_equal "#{model.module_name.titleize}::Config".constantize, 
      model.config.class 
+0

我可能會使用'returns()',因爲我明白了期望的工作方式。謝謝! – Masha