gpt4 book ai didi

java - Mockito 错误 : org. mockito.exceptions.misusing.InvalidUseOfMatchersException

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:51 25 4
gpt4 key购买 nike

我有下面的代码

public void testInitializeButtons() {
model.initializeButtons();
verify(controller, times(1)).sendMessage(
eq(new Message(eq(Model.OutgoingMessageTypes.BUTTON_STATUSES_CHANGED),
eq(new ButtonStatus(anyBoolean(), eq(false), eq(false), eq(false), eq(false))),
anyObject())));
}

抛出以下异常

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
1 matchers expected, 9 recorded.
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));

For more info see javadoc for Matchers class.
at se.cambiosys.client.medicalrecords.model.MedicalRecordPanelModelTest.testInitializeButtons(MedicalRecordPanelModelTest.java:88)

谁能告诉我如何正确编写测试?

最佳答案

你不能这样做:eq() 只能用于模拟方法参数,不能用于其他对象(就像你在 Message 的构造函数中所做的那样)。我看到三个选项:

  • 编写自定义匹配器
  • 使用 ArgumentCaptor,并使用 asserts() 测试消息的属性
  • 在 Message 类中实现 equals(),以便根据您实际要验证的字段来测试与另一个 Message 的相等性。

关于java - Mockito 错误 : org. mockito.exceptions.misusing.InvalidUseOfMatchersException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555539/

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