Foo mockFoo1 = mock(Foo.class);
Foo mockFoo2 = mock(Foo.class);
when(((Foo) any()).someMethod()).thenReturn("Hello");
在上面的示例代码中,第3行因NullPointerException而失败。为什么这样?
我对此的想法:
EITHER .. any()
应该用于匹配参数,而不是匹配触发方法的对象。
OR .. any()
仅适用于真实的具体对象,而不适用于mock
个对象。
答案 0 :(得分:7)
你需要这样做:
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");