2
我正在嘗試驗證的方法被調用,我嘲笑的對象上:驗證的Mockito方法無法檢測方法調用
public class MyClass{
public String someMethod(int arg){
otherMethod();
return "";
}
public void otherMethod(){ }
}
public void testSomething(){
MyClass myClass = Mockito.mock(MyClass.class);
Mockito.when(myClass.someMethod(0)).thenReturn("test");
assertEquals("test", myClass.someMethod(0));
Mockito.verify(myClass).otherMethod(); // This would fail
}
這不是我的確切的代碼,但它模擬了我正在努力。當試圖驗證otherMethod()
被調用時,代碼將失敗。它是否正確?我的verify
方法的理解是,它會自動偵測被稱爲存根方法(someMethod
)
我希望我的問題和代碼是明確
感謝這個,但如果我想使用'.thenReturn()''上someMethod'以及驗證'otherMethod'被調用呢? 此外,不這樣則嘲諷類時呈現'verify'沒用? – Ryan
@Ryan:嘲笑一個對象意味着:我不在乎你在現實中做了什麼。做我告訴你要做的。所以'someMethod()'的實現被替換爲'return「test」;'(如果調用0作爲參數)。您通常會模擬依賴項,即被測試類所使用的對象,而不是模擬被測試的類本身。然後你可以驗證被測試的類已經調用了依賴關係。 –
間諜和模擬是兩回事,你應該首先明白!它們的行爲不同,在單元測試方面使用方式不同。如果問題是,裏面有'代碼的someMethod()',你不想被調用,那麼您應該嘲笑的代碼,而不是嘲諷'的someMethod()'調用。 –