gpt4 book ai didi

java - 使用 Matchers.any() 匹配模拟对象

转载 作者:行者123 更新时间:2023-12-02 00:48:06 25 4
gpt4 key购买 nike

Foo mockFoo1 = mock(Foo.class);
Foo mockFoo2 = mock(Foo.class);
when(((Foo) any()).someMethod()).thenReturn("Hello");

在上面的示例代码中,第 3 行失败并出现 NullPointerException。为什么会这样?

我对此的想法:

EITHER.. any() 应该用于匹配参数,而不是匹配触发方法的对象。

OR .. any() 仅适用于真实的具体对象,不适用于 mock 对象。

最佳答案

你需要做:

Foo mockFoo1 = mock(Foo.class);
Foo mockFoo2 = mock(Foo.class);
when(mockFoo1).someMethod().thenReturn("Hello");
when(mockFoo2).someMethod().thenReturn("Hello");

any()(anyObject() 的缩写别名)是一个 Mockito 参数匹配器,可以匹配任何参数,并且只能按如下方式使用:

when(mockFoo1.someMethod(any())).thenReturn("Hello");

any() 返回 null,因此您的代码相当于

when(((Foo) null).someMethod()).thenReturn("Hello");

关于java - 使用 Matchers.any() 匹配模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418211/

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