0
有沒有辦法讓mockito中的模擬或間諜對象在方法競爭前返回其值?例如,如果我有這樣的使mockito強制方法在處理完成前返回其值
public class Calculator{
public List calculate(List l){
l.add(1);
l.add(2);
method1(l);
method2(l);
method3(l);
return l;
}
public void method1(List l){
//calculate something here
}
public void method2(List l){
//calculate something here
}
public void method3(List l){
//calculate something here
}
}
級然後我用狙這樣
Calculator calculator = new Calculator();
Calculator spy = spy(calculator);
when(spy.calculate(aList)).thenCallRealMethod();
我可以結束其過程中的方法稱爲方法2之後?我知道我可以使用doNothing().when(spy).method3(anyList())
來避免method3被調用,但有什麼方法可以讓方法計算在方法2被調用後停止它的進程嗎?
_Why_你想在單元測試中做到這一點?你可以添加更多的上下文,因爲這看起來像是[X-Y問題](http://mywiki.wooledge.org/XyProblem)? –
,因爲我真正的方法是計算數據庫中多個實體的方法,一些較早的計算過程可以在不使用數據庫的情況下完成,但後面的過程需要更新或從數據庫中選擇。我希望我的代碼覆蓋在這個方法中,但作者是其他人,所以如果我可以保持現在的方法,同時仍然保持代碼覆蓋率。 – Angga
而不是'method1'和'method2'在'List l'上產生_side effects_,你可以重構它們來返回計算結果嗎?這樣,你可以簡單地單獨測試這兩種方法。 –