gpt4 book ai didi

java - Matcher 与 Object.equal?

转载 作者:行者123 更新时间:2023-12-01 21:08:30 25 4
gpt4 key购买 nike

自定义匹配器的用途是什么以及我们如何与它进行比较

Object.equal().

我在 when() 中传递参数时遇到 Object.equal() 可以轻松解决的问题,但有时我需要使用 Matchers。我需要知道行为是什么以及如何执行。

我当前的代码是:

@Test
public void myTest() {
when(service.foo(xyzService, new ARequest(1, "A"))).thenReturn(new AResponse(1, "passed"));
when(service.foo(xyzService, new ARequest(2, "2A"))).thenReturn(new AResponse(2, "passed"));
when(service.foo(xyzService, new BRequest(1, "B"))).thenReturn(new BResponse(112, "passed"));

c.execute();
}

目前它工作正常,但在我的实际业务案例中,我无法将 xyzService 模拟为方法级变量。我想使用 any() 而不是 xyzService。但在这种情况下,一切都是经纪人。

最佳答案

使用when,您可以在固定参数或匹配器上训练模拟方法。我们不能混在一起。如果您想对一个参数使用 any() 匹配器,则还必须将另一个参数转换为匹配器:

when(service.foo(any(), eq(new ARequest(1, "A")))).thenReturn(new AResponse(1, "passed"));

如果这不适用于您的测试用例,则 ARequest 中的 equals 实现已损坏,或者测试或测试对象(即:预期方法调用任何服务,并且此请求在测试的代码中永远不会发生)

关于java - Matcher 与 Object.equal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776433/

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