我正在尝试使用 Mockito 的一些新功能,特别是静态方法的模拟。
当我模拟的方法没有参数时,我可以让它工作,但由于某种原因,如果该方法有任何参数,它就不起作用。
正如下面的示例所示,测试assertEquals( "bar", Foo.foo() )有效,但测试assertEquals(2, map.size() )失败,因为没有为模拟类定义行为。
fooMock.when(Foo::genMap).thenCallRealMethod()给出以下编译时错误:
fooMock.when( (String s)->Foo.genMap(s) ).thenCallRealMethod()给出这些编译时错误:
单元测试:
@RunWith(MockitoJUnitRunner.class)
public class FooTest {
@Test
public void fooTest(){
try( MockedStatic<Foo> fooMock = Mockito.mockStatic(Foo.class) ){
fooMock.when(Foo::foo).thenReturn("bar");
assertEquals( "bar", Foo.foo() );
//fooMock.when(Foo::genMap).thenCallRealMethod();
//fooMock.when( (String s)->Foo.genMap(s) ).thenCallRealMethod();
Map<String, String> map = Foo.genMap("1=one 2=two");
assertEquals(2, map.size() );
}
} …Run Code Online (Sandbox Code Playgroud)