私はMockitoを初めて使っています。 私はデシベル相互作用をあざけることにより、サービスのjnuitを記述しようとしています:Mockitoを使ったモック内部メソッド
私はクラス(実際のクラスの単なる代表)
public class TestService{
public Response getTestList(String type){
list = getListbyType(type);
return response.entity(list);
}
private List getListbyType(String type){
...
..
TestDAO testdao = new Testdao(sqlconn);
list = testdao.getListfromDB(type)
return list;
}
}
を以下していると私のテストクラスは
public class TestServiceTest{
@InjectMocks
private TestService testService = new TestService();
@Test
public void getTestListTest(){
List testlist = new List();
tetslist.add("test1");
TestDAO testdaomock = mock(TestDAO);
when(testdaomock.getListfromDB("test")).thenreturn(list);
list = testService.getTestList(test);
}
}
のようなものです
しかし、私はこのテストを実行すると、まだ実際のDB呼び出しを呼び出し、SQL接続と非デフォルトのコンストラクタを擬似すると、擬似値ではなくdbから値を取得しますか?私は無知です。
- UPDATE
人々が示唆したように、私は私のサービスのコンストラクタにDAOのインスタンスを移動してもスパイを使用し、しかし、まだ、私の実際のDBの呼び出しではなく、モックの呼び出しで呼び出されます。
'' private List getListbyType(String type) 'がprivateであるため、' testdaomock.getListfromDB( "test") 'はコンパイルしないでください。どのようにコンパイルするのですか? – Arkadiy
getListbyType(String型)はprivateですが、testdaomock.getList fromDB( "test")は公開されているDAOクラスにあります – user1933888
'@RunWith(MockitoJUnitRunner.class) ' – WildDev