如何模拟namedJdbcTemplate以获得两个不同的结果,这些结果在一个函数中使用了两次

问题描述 投票:0回答:1

在我的名为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();

}
java unit-testing mockito junit4
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.