我有一個Rails控制器操作來測試。在那個動作中,一個User.can方法?用不同的參數調用幾次。在其中的一個測試案例中,我想確保User.can?('withdraw')被調用。但我不關心User.can的調用?與其他參數。摩卡:如何在有多個不同參數的調用時添加方法的期望
def action_to_be_tested
...
@user.can?('withdraw')
...
@user.can?('deposit')
...
end
我在測試以下嘗試:
User.any_instance.expects(:can?).with('withdraw').at_least_once.returns(true)
但測試失敗,消息,指示User.can的意外調用( '存款')? 如果我通過參數'deposit'添加另一個期望值,則測試通過。但是我想知道是否有任何方法可以集中在'withdraw'參數的調用上(因爲其他調用與這個測試用例無關)。
我意識到[API](http://gofreerange.com/mocha/docs/Mocha/Expectation.html#with-instance_method)支持文字值(直接比較變量)或屈服於塊,但我不確定'Not(...)'結構來自何處。你能詳細談談嗎? – Pysis 2016-12-02 14:45:21
@Pysis'Not()'來自與[with()'一起使用的[Mocha :: ParameterMatchers](http://gofreerange.com/mocha/docs/Mocha/ParameterMatchers.html)。它們可以是像HasKey()這樣的駱駝案例,也可以是像has_key()這樣的蛇例。不''必須是駱駝案件,因爲它是一個關鍵字,但。 – 2017-10-06 21:02:48