gpt4 book ai didi

java - 如何修复 Junit 和 Mockito 中的 'Argument(s) are different! Wanted' 错误

转载 作者:行者123 更新时间:2023-12-02 01:10:29 25 4
gpt4 key购买 nike

在执行涉及包含 verify.save() 方法的 JUnit 测试用例时,我收到以下错误'参数不同!通缉'

@Test
public void checkCorrectAttemptTest() {
Multiplication multiplication = new Multiplication(50, 60);
User user = new User("abc");
MultiplicationResultAttempt attempt = new MultiplicationResultAttempt(user, multiplication, 3000, false);
MultiplicationResultAttempt verifiedAttempt = new MultiplicationResultAttempt(user, multiplication, 3000, true);
when(userRepository.findByAlias("abc")).thenReturn(Optional.empty());
boolean attemptResult = multiplicaitonServiceImpl.checkAttempt(attempt);
assertThat(attemptResult).isTrue();

verify(attemptRepository).save(verifiedAttempt);
}

我收到以下错误消息。

Argument(s) are different! Wanted:
attemptRepository.save(
MultiplicationResultAttempt [user=User [alias=abc], multiplication=Multiplication [factorA=50, factorB=60], resultAttempt=3000, correct=true]
);
-> at microservices.book.multiplication.service.MultiplicationServiceImplTest.checkCorrectAttemptTest(MultiplicationServiceImplTest.java:60)
Actual invocation has different arguments:
attemptRepository.save(
MultiplicationResultAttempt [user=User [alias=abc], multiplication=Multiplication [factorA=50, factorB=60], resultAttempt=3000, correct=true]
);
-> at microservices.book.multiplication.service.MultiplicationServiceImpl.checkAttempt(MultiplicationServiceImpl.java:58)
at microservices.book.multiplication.service.MultiplicationServiceImplTest.checkCorrectAttemptTest(MultiplicationServiceImplTest.java:60)

最佳答案

您应该使用:

verify(attemptRepository).save(Matchers.refEq(verifiedAttempt));

我怀疑 MultiplicationResultAttempt 没有基于对象字段的相等性实现 equals,因此当 Mockito 验证属性时,它不等于您提供的对象,尽管所有字段都具有相同的值。

Matcher.refEq(...) 使用反射来确定值是否相同。

编辑

正如 @farhanlq 指出 Matchers.refEq(..) 已弃用,应使用 ArgumentMatchers.refEq(...) 来代替。

关于java - 如何修复 Junit 和 Mockito 中的 'Argument(s) are different! Wanted' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57690810/

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