Java JUnit&;Mockito-thenReturn在WebServiceTemplate上使用时返回null
我正在使用Mochito,无法返回正在使用MarshallSendReceive进行的api调用的模拟响应 下面是服务api调用(其中serviceRequest的类型为ValidateRequest,HeaderComposingCallback实现WebServiceMessageCallback) 这里是JUnit测试中的模拟,validateResponse是创建的对象,并且填充了值,但在运行下面的单元测试时,代码总是返回空响应Java JUnit&;Mockito-thenReturn在WebServiceTemplate上使用时返回null,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我正在使用Mochito,无法返回正在使用MarshallSendReceive进行的api调用的模拟响应 下面是服务api调用(其中serviceRequest的类型为ValidateRequest,HeaderComposingCallback实现WebServiceMessageCallback) 这里是JUnit测试中的模拟,validateResponse是创建的对象,并且填充了值,但在运行下面的单元测试时,代码总是返回空响应 @RunWith(MockitoJUnitRunner.c
@RunWith(MockitoJUnitRunner.class)
public class ValidateServiceTest {
@Mock
WebServiceTemplate template;
....
when(template.marshalSendAndReceive(any(ValidateRequest.class),(WebServiceMessageCallback) any(HeaderComposingCallback.class))).thenReturn(validateResponse);
..
}
预期将接收非空对象的validateResponse。
WebServiceGatewaySupport
在其构造函数中创建WebServiceTemplate
的新实例
确保你打过电话:
public final void setWebServiceTemplate(WebServiceTemplate webServiceTemplate)
要将您的模拟注入您的
WebServiceGatewaySupport
,我们必须查看方法getWebServiceTemplate()
但它肯定有问题(您不是从模板中调用marshalSendAndReceive()
,而是从方法getWebServiceTemplate
中的实例中调用。你可以试着模仿它:
@RunWith(MockitoJUnitRunner.class)
public class ValidateServiceTest {
@Spy
ValidateService validateService;
@Mock
WebServiceTemplate template;
....
when(validate.getWebServiceTemplate()).thenReturn(template);
when(template.marshalSendAndReceive(any(ValidateRequest.class),(WebServiceMessageCallback) any(HeaderComposingCallback.class))).thenReturn(validateResponse);
..
}
尝试了,但仍然是空响应。请输入任何代码片段?或者链接到一些资源?
@RunWith(MockitoJUnitRunner.class)
public class ValidateServiceTest {
@Spy
ValidateService validateService;
@Mock
WebServiceTemplate template;
....
when(validate.getWebServiceTemplate()).thenReturn(template);
when(template.marshalSendAndReceive(any(ValidateRequest.class),(WebServiceMessageCallback) any(HeaderComposingCallback.class))).thenReturn(validateResponse);
..
}