考慮以下方法:如何在不運行方法的情況下模擬方法調用和返回值?
public boolean isACertainValue() {
if(context.getValueA() != null && context.getValueA().toBoolean() == true) {
if(context.getType() != null && context.getType() == ContextType.certainType) {
return true;
}
}
return false;
}
我沒有寫這個代碼,它是醜陋的地獄,它完全是過於複雜,但我有它的工作。
現在我想測試一個方法,該方法依賴於對此方法的調用。
我以爲我可以應付這樣的:
Mockito.when(spy.isACertainValue()).thenReturn(true);
,因爲這是我想測試的情況。
但它不工作,因爲它仍然是調用方法體:/
我得到nullpointers或者說我相處
misusing.WrongTypeOfReturnValue線的東西;布爾值不能由getValueA()返回。 getValueA()應返回值a
於是,我(作爲一種解決方法)做:
Mockito.when(contextMock.getValueA()).thenReturn(new ValueA());
和 Mockito.when(contextMock.getType()).thenReturn(ContextType.certainType);
但後來我得到一個空指針,我不能似乎能夠進行調試。
那麼,在這種情況下它是如何完成的?
這正是如何做到這一點,但也許有在值a您需要進一步的在您的測試值,所以你也應該嘲笑返回的對象,而不僅僅是迴歸一個使用(默認)構造函數實例化的實例。 – Stultuske