JUnit для Spring WebServiceTemplate не работает

Я использую веб-сервис SOAP с использованием Spring WebServiceTemplate. Выполняя JUnit, я сталкиваюсь с проблемой.

Мой класс клиента:

@Service
public class MyWsClient extends WebServiceGatewaySupport {

@Autowired
private WebServiceTemplate webServiceTemplate;

public String getData(...) throws Exception{
    ...
    SampleResponse response = (SampleResponse) webServiceTemplate.marshalSendAndReceive(request);
    ...
    return response.getData();
}}

Мой тестовый класс:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-junit.xml"})
public class MyWsClientTest {

@Autowired
ApplicationContext applicationContext;

@InjectMocks
MyWsClient myWsClient;

private MockWebServiceServer mockServer;

@Before
public void init() {
    MockitoAnnotations.initMocks(this);
    mockServer = MockWebServiceServer.createServer(applicationContext);
}

@Test
public void testGetData() throws Exception {

    Source expectedRequestPayload = new StringSource(
            "<customerCountRequest xmlns=\"http://springframework.org/spring-ws/test\" />");
    Source responsePayload = new StringSource(
            "<customerCountResponse xmlns='http://springframework.org/spring-ws/test'>"
                    + "<customerCount>10</customerCount>" + "</customerCountResponse>");
    mockServer.expect(RequestMatchers.payload(expectedRequestPayload)).andRespond(ResponseCreators.withPayload(responsePayload));

    String data = myWsClient.getData(...);
    assertNotNull(data);
    mockServer.verify();
}}

Выпуск:
Когда я выполняю свой тестовый пример, я получаю NullPointerException для строки "webServiceTemplate.marshalSendAndReceive(request)" внутри моего класса Client.
WebServiceTemplate имеет нулевое значение.
Есть идеи, что я делаю не так?

1 ответ

Решение

Я решил это, изменив @InjectMocks на @Autowired на "MyWsClient myWsClient";

Другие вопросы по тегам