This question already has answers here:
How to tell a Mockito mock object to return something different the next time it is called?

(5个答案)


4个月前关闭。





在我的名为JdbcTemplate的类中,单个函数中使用了两次以获取不同的结果。但是嘲笑它只会得到一个结果。如何准备测试用例呢?

我的课:

public void Getsomething(){

Result1 = namedJdbcTemplate.queryForObject(
            "SomeSQLString1", params, String.class);

Result2 = namedJdbcTemplate.queryForObject(
    "SomeSQLString2", params, String.class);


测试类别:

@Test
public void getNewRecordsTest2(){

Mockito.when(namedJdbcTemplate.queryForObject(Mockito.anyString(), Mockito.any(MapSqlParameterSource.class),
            Mockito.any(String.class))).thenReturn(Result1);

Mockito.when(namedJdbcTemplate.queryForObject(Mockito.anyString(), Mockito.any(MapSqlParameterSource.class),
        Mockito.any(String.class))).thenReturn(Result2);

    /**calling actual*/
    SomeClass.Getsomething();

}


我试过两次,但只会保留一个结果。

mockito.doreturn无法给出任何结果,并在函数内部调用了真实方法,提供了空结果

    @Test
public void getNewRecordsTest2(){

Mockito.doReturn(Result1).when(namedJdbcTemplate).queryForObject("SomeSQLString1", params, String.class);

Mockito.doReturn(Result2).when(namedJdbcTemplate).queryForObject("SomeSQLString1", params, String.class);

    /**calling actual*/
    SomeClass.Getsomething();

}

最佳答案

Here is a nice tutorial about this

10-07 19:18
查看更多