我正在使用 Mockito 進行單元測驗,我想跳過方法的執行。
我提到了這張票Skip execution of a line using Mockito。在這里,我假設 doSomeTask() 和 createLink() 方法在不同的類中。但就我而言,這兩種方法都在同一個類中(ActualClass.java)。
//Actual Class
public class ActualClass{
//The method being tested
public void method(){
//some business logic
validate(param1, param2);
//some business logic
}
public void validate(arg1, arg2){
//do something
}
}
//Test class
public class ActualClassTest{
@InjectMocks
private ActualClass actualClassMock;
@Test
public void test_method(){
ActualClass actualClass = new ActualClass();
ActualClass spyActualClass = Mockito.spy(actualClass);
// validate method creates a null pointer exception, due to some real time data fetch from elastic
doNothing().when(spyActualClass).validate(Mockito.any(), Mockito.any());
actualClassMock.method();
}
}
由于執行 validate 方法時會出現空指標例外,因此我試圖通過監視 ActualClass 物件來跳過方法呼叫,如我上面提到的票證中所述。盡管如此,問題仍未解決。validate 方法被執行并創建一個空指標例外,因此無法覆寫實際的測驗方法。
那么,如何跳過同一類中的 validate() 方法的執行。
uj5u.com熱心網友回復:
呼叫時必須始終使用您的間諜類method()。
@Test
public void test_method(){
ActualClass spyActualClass = Mockito.spy(actualClassMock);
doNothing().when(spyActualClass).validate(Mockito.any(), Mockito.any());
spyActualClass.method();
}
在實踐中,而不是
actualClassMock.method();
你必須使用
spyActualClass.method();
uj5u.com熱心網友回復:
如果有任何外部依賴項,可以同時使用以下兩個注釋。@InjectMocks @Spy
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/438724.html
上一篇:如何查找方法是否屬于超級或-使用ES6擴展陣列和測驗
下一篇:是否可以在測驗中檢查呼叫引數?
