Java 当调用方法时,方法无法返回模拟对象

Java 当调用方法时,方法无法返回模拟对象,java,spring,junit,jdbctemplate,Java,Spring,Junit,Jdbctemplate,我看到很多关于这个问题的帖子,但仍然无法解决我的问题 when(queryEngineService.getRelationshipWithResources(anyString(), refEq(filterDto), anyString(), anyString(), anyInt(), anyInt(), anyString())).thenReturn(tenantResponseDto); TenantResponseDto dto = queryEng

我看到很多关于这个问题的帖子,但仍然无法解决我的问题

when(queryEngineService.getRelationshipWithResources(anyString(), refEq(filterDto), anyString(), anyString(),
                anyInt(), anyInt(), anyString())).thenReturn(tenantResponseDto);
TenantResponseDto dto = queryEngineService.getRelationshipWithResources(anyString(), refEq(filterDto),
                anyString(), anyString(), anyInt(), anyInt(), anyString());
当我调试对象时。我无法看到其中的模拟数据。有什么我遗漏的吗

下面是我的TestClass:

    public class QueryEngineAPITest extends AbstractTest {

    QueryEngineService queryEngineService = Mockito.mock(QueryEngineService.class);
    TenantResponseDto tenantResponseDto;

    private QueryEngineDto queryEngineDto;
    private RelationshipFilterDto filterDto;
    @Before
    public void setUp() throws Exception {
        super.setUp();
        prepareMockData();

    }

    void prepareMockData() {
        tenantResponseDto = new TenantResponseDto();
        int i = 0;
        queryEngineDto = new QueryEngineDto();
        List<Map<String, Object>> mockDataList = new ArrayList<Map<String, Object>>();
        while (i < 10) {
            Map<String, Object> mockDataMap = new HashMap<String, Object>();
            mockDataMap.put("APPLICATION", "AWS");
            mockDataMap.put("ENVIRONMENT_NAME", "SIGMA LABS" + i);
            mockDataList.add(mockDataMap);
            i++;
        }
        queryEngineDto.setQueryData(mockDataList);
        tenantResponseDto.setResponseAsQueryEngineDto(queryEngineDto);
tenantResponseDto.setResponseCount(Long.valueOf(queryEngineDto.getQueryData().size()));

    filterDto = new RelationshipFilterDto();
    filterDto.setBefore("");
}

@Test
public void getRelationShipsTest() throws Exception {
    when(queryEngineService.getRelationshipWithResources(eq(""), refEq(filterDto), eq(""), eq(""), eq(1), eq(1),
            eq(""))).thenReturn(tenantResponseDto);
    TenantResponseDto dto = queryEngineService.getRelationshipWithResources(eq(""), refEq(filterDto), eq(""),
            eq(""), eq(1), eq(1), eq(""));
    assertFalse(dto.getResponseAsQueryEngineDto().getQueryData().isEmpty());
    assertEquals(Long.valueOf(dto.getResponseAsQueryEngineDto().getQueryData().size()), Long.valueOf(10));

}
公共类查询引擎测试扩展了抽象测试{
QueryEngineService QueryEngineService=Mockito.mock(QueryEngineService.class);
承租人响应承租人响应;
私人查询到查询到查询到;
私人关系filterDto filterDto;
@以前
public void setUp()引发异常{
super.setUp();
prepareMockData();
}
void prepareMockData(){
租户响应到=新租户响应到();
int i=0;
queryEngineDto=新建queryEngineDto();
List mockDataList=newarraylist();
而(i<10){
Map mockDataMap=newhashmap();
mockDataMap.put(“应用程序”、“AWS”);
mockDataMap.put(“环境名称”、“西格玛实验室”+i);
mockDataList.add(mockDataMap);
i++;
}
setQueryData(mockDataList);
租户响应。setResponseAsQueryEngineDto(queryEngineDto);
tenantResponseDto.setResponseCount(Long.valueOf(queryEngineDto.getQueryData().size());
filterDto=新关系filterDto();
过滤器至。设置前(“”);
}
@试验
public void getRelationShipsTest()引发异常{
当(QueryEngineseService.getRelationshipWithResources)(等式(“”),参考等式(filterDto),等式(“”),等式(“”),等式(1),等式(1),
等式(“”),然后返回(承租人响应);
租户响应dto=QueryEngineseService.getRelationshipWithResources(eq(“”)、refEq(filterDto)、eq(“”),
等式(“”)、等式(1)、等式(1)、等式(“”);
assertFalse(dto.getResponseAsQueryEngineDto().getQueryData().isEmpty());
assertEquals(Long.valueOf(dto.getResponseAsQueryEngineDto().getQueryData().size()),Long.valueOf(10));
}

带有参数的模拟方法与正在调用的方法不匹配

when(queryEngineService.getRelationshipWithResources(eq(""), refEq(filterDto), eq(""), eq(""), eq(1), eq(1),eq(""))).thenReturn(tenantResponseDto);
TenantResponseDto dto = queryEngineService.getRelationshipWithResources(eq(""), refEq(filterDto), eq(""),
                eq(""), eq(1), eq(1), eq(""));
您需要将第二行更改为:

TenantResponseDto dto = queryEngineService.getRelationshipWithResources("",filterDto, "", "", 1, 1, "");

eq
refEq
被称为参数匹配器,当您想要运行测试时,您需要按原样提供参数,而不是在参数匹配器中,当我调试时
是什么意思?您的测试失败了吗?或者您是否有任何错误堆栈跟踪?断言失败。对于作为mock
queryEngineService.getRe提供的数据RelationshipWithResources(“,filterDto,”,“,”,0,0,”)
-尝试使用数据,而不是argMatchers仍然相同。我得到了null。您应该附加完整的测试代码以查看使用的变量
filterDto
tenantResponseDto