Есть ли способ получить "базовый URL" для контроллера в Spring при тестировании? - PullRequest
0 голосов
/ 18 июня 2020

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

@RestController
@RequestMapping("controller")
public class Controller {
    @RequestMapping("foo")
    public String method() {
        return "foo'd the bar";
    }
}

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

@WebMvcTest(Controller.class)
public class ControllerTest {
    @Autowired
    private Controller controller;

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void canCreate() throws Exception {
        Assertions.assertThat(controller).isNotNull();
    }

    @Test
    public void canGetDummy() throws Exception {
        this.mockMvc.perform(get("/controller/foo")).andDo(print()).andExpect(status().isOk());
    }
}

Мне это кажется немного fr agile, с «базовый URL» контроллера жестко запрограммирован как минимум в n+1 местах для n протестированных методов. Есть ли способ настроить тест, чтобы избежать этого (поэтому я бы написал /foo вместо /controller/foo)? Я мог бы использовать переменную stati c, но похоже, что должно быть более чистое решение.

(Или я думаю об этом неправильно, и необходимость писать полный путь - это хорошо - и в этом случае , почему?)

1 Ответ

2 голосов
/ 18 июня 2020

Полный путь /controller/foo является частью веб-API, который вы тестируете. Вы можете извлекать строковые части в константы, если хотите, но включение их непосредственно в тесты тем или иным способом - это хорошо.

...