首页 > 解决方案 > Mockito when()..thenReturn() 总是返回 null

问题描述

我目前正在为 Play Controller 编写测试。

在我的控制器中,我有一些调用方法的服务

MyMethod {
   String test = myService.test()
   ObjectNode result = myService.myFunc(..someListOfEnums, ...string, ...someListOfString, ...someString, ...some String, ...clientObject)
}

当使用 mocked 运行我的测试时myService,使用 when()...thenReturn()myFunc(...)结果始终为空。当我test()对测试字符串执行相同操作时,总是会填充。这里MyService.class是一个界面。

在我的测试中,我正在做:

Client _someMockedObject = mock(Client.class);
MyService _myService = mock(MyService.class);

ObjectNode n = JsonNodeFactory.instance.objectNode();
n.set(Constants.RESULT_FIELD, JsonNodeFactory.instance.arrayNode());

List<SomeEnumClass> l = new ArrayList<>(Arrays.asList(Constants.Enum.test, Constants.Enum.test2));

String test = "test";
List<String> c = new ArrayList<>(Arrays.asList("test1", "test2"));
String test2 = "";
String test3 = "";

when(_myService.test()).thenReturn("hello"); <--- FIRST
when(_myService.myFunc(l, test, c, test2, test3, _someMockedObject)).thenReturn(n); <--- SECOND

PrestoResource myController = new myResource(_someMockedObject, _myService);
Result result = myController.myMethod("");

...

看起来我正在正确使用 when 和 thenReturn 但我没有在第二种方法中输入正确的参数吗?

标签: javaunit-testingplayframeworkmockito

解决方案


推荐阅读