gpt4 book ai didi

junit - 论据不同!通缉 : Actual invocation has different arguments:

转载 作者:行者123 更新时间:2023-12-05 01:37:45 26 4
gpt4 key购买 nike

服务类:

public void createManualEvaluationReductionChangeHistory(Long key, String accountId, RegisterReductionPerFunction registerReductionPerFunction, String languageCode, String comments, String pagRedFlag) {
ProfessionalCustomerHistory professionalCustomerHistory = new ProfessionalCustomerHistory();
professionalCustomerHistory.setDescription(comments);
professionalCustomerHistory.setReductionCategory(registerReductionPerFunction.getReductionCategoryCode());
professionalCustomerHistory.setReductionType(registerReductionPerFunction.getReductionTypeCode());
professionalCustomerHistory.setValidityId(registerReductionPerFunction.getValidityId().longValue());
professionalCustomerHistory.setReductionPercentage(reductionCategoryService.getReductionPercentage(languageCode,
registerReductionPerFunction.getReductionCategoryCode(), registerReductionPerFunction.getReductionTypeCode()));
professionalCustomerHistory.setTotalReduction(professionalCustomerHistory.getReductionPercentage());
professionalCustomerHistory.setPagFixedReductionFlag(pagRedFlag);
setCommonHistoryDetails(professionalCustomerHistory, Constants.NO, accountId, key, Constants.HISTORY_TYPE_REDUCTIONS);
professionalCustomerHistoryDlService.create(professionalCustomerHistory);
}

联合测试: @测试

public void createManualEvaluationReductionChangeHistory() {

ProfessionalCustomerHistory professionalCustomerHistory = new ProfessionalCustomerHistory();
RegisterReductionPerFunction registerReductionPerFunction = new RegisterReductionPerFunction();
professionalCustomerHistory.setValidityId(1L);
registerReductionPerFunction.setValidityId(1);
professionalCustomerHistory.setProfCustomerId(PROF_CUST_ID);
professionalCustomerHistory.setHistoryType("RD");
professionalCustomerHistory.setEditedBy(ACCOUNT_ID);
professionalCustomerHistory.setHistoryDate(new Date());
professionalCustomerHistory.setNoDeleteFlag("N");
professionalCustomerHistory.setReductionPercentage(null);
professionalCustomerHistory.setTotalReduction(null);
professionalCustomerHistory.setDescription(COMMENTS);
Mockito.when(reductionCategoryService.getReductionPercentage(LANGUAGE_CODE, null, null)).thenReturn(null);
profCustomerHistoryService.createManualEvaluationReductionChangeHistory(PROF_CUST_ID, ACCOUNT_ID.toString(), registerReductionPerFunction, LANGUAGE_CODE, COMMENTS, null);
Mockito.verify(reductionCategoryService).getReductionPercentage(LANGUAGE_CODE,null,null);
Mockito.verify(professionalCustomerHistoryDlService).create(professionalCustomerHistory);
}

当我测试它时出现以下错误。

参数不同!通缉:实际调用有不同的参数:

但我看到所有的参数都完全一样。是什么导致了这个问题?

最佳答案

ProfessionalCustomerHistory is a DB entity, i dont have equals and hashcode

假设只有您的第二次 verify 失败,这就是问题所在。

目前,您在测试和逻辑中创建了一个不同的 ProfessionalCustomerHistory 对象。它们可能具有相同的内容,但没有正确实现 equalshashcode 方法,java 中的默认实现只关心对象引用。

如果您使用 IDE,它可能有一些生成方法可以让您生成正确的 equalshashCode 方法。


如果你只想验证是否调用了正确的方法,而不关心具体的内容,你可以使用:

Mockito.verify(professionalCustomerHistoryDlService)
.create(Mockito.any(ProfessionalCustomerHistory.class));

如果您不能或不想更改 ProfessionalCustomerHistory 类,您可以使用 ArgumentCaptor 并在之后比较不同的字段。

关于junit - 论据不同!通缉 : Actual invocation has different arguments:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60549020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com