2017-10-12 78 views
0

一個靜態方法我有一個靜態類Exec用方法doSomething的(對於)懲戒使用不同的參數和不同的結果

現在我想模擬它用於下列操作,以便2調用或由一個任意的順序。

Exec.stub(:doSomthing).with('a').and_return('called with a') 
Exec.stub(:doSomthing).with('b').and_return('called with b') 

我得到錯誤

Please stub a default value first if message might be received with other args as well. 

請問該如何解決呢?

注:這上面的代碼僅僅是僞代碼,而不是我真正的代碼

+0

請注意,在Ruby中,您應該擁有「do_something」形式的方法名稱,因爲大寫字母保留用於「ClassName」和「CONSTANT_NAME」情境。 – tadman

+0

您是否需要先調用'Exec.stub(:doSomthing){}'? – tadman

+0

不,只有Exec.doSomething('a)和Exec.doSoemthing('b')調用是預期的,所以我爲這兩個調用而訓練。 – user93796

回答

1

你可以這樣說:如果你需要你的規格時,該方法失敗

allow(Exec).to receive(:doSomthing).with('a').and_return('called with a') 
allow(Exec).to receive(:doSomthing).with('b').and_return('called with b') 

使用expect代替allow根本沒有被叫到。