У меня есть существующее приложение, которое я пытаюсь написать модульные тесты для ... Нет реального уровня обслуживания. Это база данных controller-> repository->, а конечные точки определяются посредством аннотаций на контроллере. Я использую Spring Boot 1.3.8 (не 1.4).Весеннее тестирование - конечная точка тестирования с макетным контроллером
Что я хочу сделать, это издеваться над контроллером, чтобы вернуть издевательскую коллекцию, которую я могу проверить. Что происходит в INSTEAD, приложение загружается, и реальные данные засеваются, и когда я вызываю конечную точку, реальные данные приложения возвращаются. Итак, кажется, у меня есть две проблемы: я делаю настройку данных и конфигурацию, которую я не хочу выполнять в модульном тесте, и, во-вторых, мой макет-контроллер игнорируется. Они, вероятно, связаны между собой. Любая помощь приветствуется. Благодарю.
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Mock
private ApplicationController applicationController = new ApplicationController();
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void contextLoads() {}
@Test
public void testEndPoints() throws Exception {
Application testApp = TestUtils.generateApplication();
Mockito.when(applicationController.getApplications()).thenReturn(Arrays.asList(testApp));
log.info("Verifying applications endpoint is up and running.");
mockMvc.perform(get("/applications/")).andExpect(status().isOk())
.andDo(print())
.andExpect(content().contentType(TestUtils.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.[0].name",is("my_name")));
}
Спасибо. У меня на самом деле есть класс для «ServiceTests», который почти выглядит точно так, как вы показали. Начиная с нуля, я бы создал уровень сервиса, который контроллер делегирует, а затем он имеет бизнес-логику и вызывает репозитории для данных. Я хочу просто протестировать вызов конечных точек с возвратными фиктивными данными и проверить некоторые значения JSON и статус http. Если я не издеваюсь над контроллером, у меня возникают проблемы, так как в методе контроллера есть некоторые частные методы, которые нельзя обрезать. – Mike
Мне не совсем ясно, что вы пытаетесь проверить. Я думал, вы хотели проверить свой контроллер. Но если вы просто издеваетесь над этим и сразу возвращаете некоторые данные, что вы тогда тестируете? – borowis