简体   繁体   English

Mockito 不是在嘲笑方法

[英]Mockito is not mocking the method

I am trying to write a test case for a method, but that method is not getting mocked I guess.我正在尝试为一种方法编写测试用例,但我猜该方法并没有被嘲笑。

Here is the method whose response is returning null:这是其响应返回 null 的方法:

      response = httpClient.makeRequest(HttpMethod.POST, params.getUrl(), request, headers, null, param1.getRequest().getId(),
          param1, false);

The actual method:实际方法:

  public HttpResponse makeRequest(String method, String url, String param, Header[] headers, String serviceName, String requestId,
      className param1, Boolean useProxy) throws SystemException {
....
....
....
return httpResponse;
}

This is the mocking code of the respected method:这是受人尊敬的方法的模拟代码:

Mockito.when(httpClient.makeRequest(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.any(), Mockito.anyBoolean())).thenReturn(response);

The exception that I am getting:我得到的例外:

com.morfeus.workflow.exception.WorkflowException: java.lang.NullPointerException

    at com.morfeus.workflow.processor.WebhookProcessor.process(WebhookProcessor.java:164)
    at com.morfeus.workflow.processor.script.WebhookScriptProcessorTest.process(WebhookScriptProcessorTest.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
    at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.NullPointerException
    at com.morfeus.workflow.processor.WebhookProcessor.process(WebhookProcessor.java:151)
    ... 32 more

You are passing null but expecting anyString() .您正在传递null但期望anyString()

From docs ,文档

Since Mockito 2.1.0, only allow non-null String.从 Mockito 2.1.0 开始,只允许非空字符串。 As this is a nullable reference, the suggested API to match null wrapper would be isNull().由于这是一个可为空的引用,匹配空包装器的建议 API 将是 isNull()。 We felt this change would make tests harness much safer that it was with Mockito 1.x.我们认为这种变化会使测试工具比 Mockito 1.x 更安全。

Use isNull instead.使用isNull代替。

Modify it to,修改为,

Mockito.when(httpClient.makeRequest(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(), Mockito.isNull(), Mockito.anyString(), Mockito.any(), Mockito.anyBoolean())).thenReturn(response);

or don't pass null .或者不通过null

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM