Как внедрить HttpSession и HttpServletRequest при модуле dropwizard тестирования в junit5? - PullRequest
0 голосов
/ 22 октября 2018

Это очень расстраивает.Я создаю приложение с использованием dropwizard и тестирую его с помощью junit5 и модуля dropwizard-testing (версия junit5).Затем я пытаюсь проверить простую конечную точку в ресурсе.Конечная точка получает HttpSession (и запрос), но это всегда null.Я много читал, но не могу найти, как ввести сеанс.

Это мой ресурс:

@POST
@Path("/doStuff")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public String doStuff(@Session HttpSession session
        , @Context HttpServletRequest request) {
     // Do the stuff with the session and the request
}

Мой тест выглядит примерно так:

@ExtendWith(DropwizardExtensionsSupport.class)
class MyResourceTest {
    ResourceExtension resources = ResourceExtension.builder()
        .addResource(new MyResource())
        .build();


    @BeforeEach
    void setup() {
    }

    @Test
    void testDoStuff() {
        Response response = resources.target("/api/doStuff")
            .request(MediaType.APPLICATION_FORM_URLENCODED)
            .accept(MediaType.TEXT_HTML)
            .post();
        System.out.println(response);
    }
}

Мне нужно манипулировать сессией и запросом по тесту.Является ли это возможным?вся помощь приветствуется.

1 Ответ

0 голосов
/ 03 декабря 2018

Вам необходимо добавить тестовую фабрику контейнеров.

ResourceExtension resources = ResourceExtension.builder()
    .setTestContainerFactory(new GrizzlyWebTestContainerFactory())
    .addResource(new MyResource())
    .build();

Если вы используете Maven:

<dependency>
    <groupId>org.glassfish.jersey.test-framework.providers</groupId>
    <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
    <!-- version>${jersey.version}</version -->
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>
...