Alexiuscrow
@Alexiuscrow

Как протестировать вебсокеты используя Jersey Test Framework?

Есть веб сервис написанный с использованием фреймворка Jersey версии '1.18'. Для тестирования ресурсов использую Jersey Test Framework. Для JAX-RS ресурсов тесты написал - всё работает. Доволен.
Но есть и вебсокеты, для которых тоже нужно написать тесты. Проблема заключается в том, что при тестировании через Jersey Test Framework не подхватывается эндпоинт вебсокета и при обращении к нему я получаю 404. В обычной же ситуации, когда собираю war файл и после деплою его к примеру на tomcat - всё работает как нужно.
Сокет отмечен аннотацией
@javax.websocket.server.ServerEndpoint. Также был реализован интерфейс javax.websocket.server.ServerApplicationConfig, с помощью которого сообщаю которые энпоинты имеются:
public class EndpointsConfig implements ServerApplicationConfig {
    @Override
    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {
        Set<Class<?>> cfgs = new HashSet<Class<?>>();
        cfgs.add(MyEndpoint.class); 
        // ...
        return cfgs;
    }
    // ...
}

Сам тест:
public class WebSocketTest extends JerseyTest {

    public WebSocketTest() throws TestContainerException, IOException {
        super(new WebAppDescriptor.Builder("my.service.endpoints")
                .contextListenerClass(GuiceConfig.class)
                .addFilter(GuiceFilter.class, "guiceFilter", new TreeMap<String, String>() {{
                            put("com.sun.jersey.config.property.resourceConfigClass", "my.service.endpoints.UriExtensionsConfig");
                        }}
                )
                .build());
    }

    @Override
    protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
        return new GrizzlyWebTestContainerFactory();
    }

    @Test
    public void test() {
        // обращение к вебсокету
    }
}

Как сообщить Jersey Test Framework-у что есть конкретный вебсокет эндпоинт? Подозреваю, что нужно что-то указать в экземпляре WebAppDescriptor (передаю в качестве аргумента в конструктор суперкласса класса WebSocketTest ), но что?
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы