私のクラス構造があるMockito Javaでメソッドを継承した。その後モックは、次のように
public class MyParentClass {
void doSomethingParent(){
System.out.println("something in parent");
}
}
public class MyClass extends MyParentClass{
protected String createDummyRequest(Holder myHolder){
//...
super.doSomethingParent();//I want to avoid this
//...
callingDB();
return "processedOutput";
}
private void callingDB(){
System.out.println("Calling to DB");
}
}
私のユニットテスト:私は私の中で)super.doSomethingParent(の呼び出しを防ぐにはどうすればよい
public class UnitTest {
public void testCreateDummyRequest(){
//create my mock holder
Holder mockHolder = new Holder();
MyClass mockObj = Mockito.mock(MyClass.class);
//mock doSomethingParent()
//mock callingDB()
//as mockObj is a fully mock, but I need to run my real method
//Mockito.when(mockObj.createDummyRequest(mockHolder)).thenCallRealMethod();
mockObj.createDummyRequest(mockHolder);
//Problem: doSomethingParent() is getting called though I have mocked it
}
}
方法? (私がテストを書いている方法)
NicktarとSerghey Bishyrの回答はすでにあなたにとって役に立つかもしれないと思いますが、私はもう少しコメントがあるかもしれません。 UnitTestクラスの目標は、MyClassの実装をテストするだけですが、MyParentClassからの依存関係を解除することです(言い換えれば、MyParentClassのモックを提供するMyClass実装をテストします)。 –