Java JUnit&;Mockito-thenReturn在WebServiceTemplate上使用时返回null

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

我正在使用Mochito,无法返回正在使用MarshallSendReceive进行的api调用的模拟响应

下面是服务api调用(其中serviceRequest的类型为ValidateRequest,HeaderComposingCallback实现WebServiceMessageCallback)

这里是JUnit测试中的模拟,validateResponse是创建的对象,并且填充了值,但在运行下面的单元测试时,代码总是返回空响应

@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);
    ..
}