gpt4 book ai didi

junit - Mockito中的“测试失败消息”:参数不同!通缉:

转载 作者:行者123 更新时间:2023-12-03 13:40:13 25 4
gpt4 key购买 nike

我正在JUnit中测试Restful端点,并在
在save方法中作为参数存在的列表,

**"Argument(s) are different! Wanted:"** 
save(
"121",
[com.domain.PP@6809cf9d,
com.domain.PP@5925d603]
);
Actual invocation has different arguments:
save(
"121",
[com.domain.PP@5b6e23fd,
com.domain.PP@1791fe40]
);

当我调试代码时,代码在下面的 验证行处中断,然后将
以上异常(exception)。看起来像保存中“testpPList”中的参数
方法是不同的。我不知道当我在他们中构建它们时它会变得如何不同
正确地JUNit,然后调用RestFul URL。

要求您提供宝贵的意见。谢谢。

码:
@Test
public void testSelected() throws Exception {
mockMvc.perform(put("/endpointURL")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJsonBytes(testObject)))
.andExpect(status().isOk());
verify(programServiceMock, times(1)).save(id, testpPList);
verifyNoMoreInteractions(programServiceMock);
}

Controller 方式:
@RequestMapping(value = "/endpointURL", method = RequestMethod.PUT)
public @ResponseBody void uPP(@PathVariable String id, @RequestBody List<PPView> pPViews) {
// Code to construct the list which is passed into the save method below
save(id, pPList);
}

最佳答案

实现Object#equals(Object)可以通过相等比较解决它。但是,有时您要验证的对象无法更改,或者其equals函数无法实现。对于这种情况,建议使用org.mockito.Matchers#refEq(T value, String... excludeFields)。因此,您可以使用类似:

verify(programServiceMock, times(1)).save(id, refEq(testpPList));

只需使用 refEq包装参数即可解决此问题。

关于junit - Mockito中的“测试失败消息”:参数不同!通缉:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213897/

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