java - 如何模拟namedJdbcTemplate以获得在一个函数中使用两次的两个不同结果

标签 java unit-testing mockito junit4

在我的名为JdbcTemplate的类中,在单个函数中使用了两次以获得不同的结果。但 mock 它只会给出一个结果。如何为其准备测试用例?

我的类(class):

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 - 如何模拟namedJdbcTemplate以获得在一个函数中使用两次的两个不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60316216/

相关文章:

Java私有(private)字段的继承

java - 为什么RequestMapping注释不能与springboot应用程序中的类一起使用?

java - 如何将 Base64 字符串发送到 API (MathPix OCR)?

unit-testing - 如何在 vue 2 的组件的根元素上测试事件?

java - Spy对象值不随when改变,thenReturn

java - 针对多个字段的 Firestore 查询过滤器

javascript - Jasmine:如何获取当前测试的名称

ios - 我可以使用 XCTest 测试应用程序中某一部分的性能吗?

java - 如何在使用 Autowiring 对象的测试中使用真实函数?

java - GWT RPCServlet - Junit + getThreadLocalRequest