Не удается разрешить метод .andExpect () даже после реализации ответа Stackoverflow - PullRequest
0 голосов
/ 12 октября 2018

Я знаю, что вопрос с точно таким же названием существует, но ответ мне больше не помогает.

Я использую WebMvcTest для тестирования моего класса контроллера.Однако, когда дело доходит до сравнения результата с использованием .andExpect, мой IDEA (intellij) не может его разрешить.

Вопрос с тем же названием, что и у решения этого, включен в мой импорт и не используется.Я также посмотрел документы на пружину и использовал 2 необходимых инструмента.

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

Ниже вы найдете весь мой класс и, в данном случае, весь мой импорт.

package be.pxl.backend.restapi;

import be.pxl.backend.restapi.controller.UserController;
import be.pxl.backend.restapi.domain.User;
import be.pxl.backend.restapi.manager.UserManager;

import org.junit.Test;
import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

import static org.hamcrest.Matchers.*;
import static org.mockito.BDDMockito.given;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

//stackoverflow try == unused
import org.springframework.test.web.servlet.ResultActions;


@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerIntegrationTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserManager userManager;

    @Test
    public void givenUser_WhenGetUser_ThenReturnUser() throws Exception{
        User bjorn = new User();
        bjorn.setUsername("Bjorn");
        bjorn.setPassword("Wachtwoord");
        bjorn.setEmail("test@email.be");

        given(userManager.getUserById(1L)).willReturn(bjorn);

        mockMvc.perform(get("/user/1")
                .contentType(MediaType.APPLICATION_JSON)
                .andExpect(status().isOk())
                .andExpect(jsonPath("$", hasSize(1)))
                .andExpect(jsonPath("$[0].username", is(bjorn.getUsername()))));
    }
}

1 Ответ

0 голосов
/ 12 октября 2018

Прежде всего, согласно Checkstyle, вы должны избегать импорта звезд .Во-вторых, вы неправильно поместили две закрывающие скобки, одну в contentType(), а другую в последний вызов andExpect().Ниже приведен рабочий код.

импорт:

import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import be.pxl.backend.restapi.controller.UserController;
import be.pxl.backend.restapi.domain.User;
import be.pxl.backend.restapi.manager.UserManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

Обратите внимание, что импорт упорядочен в соответствии с Google Java Style .

пробный тест:

mockMvc.perform(get("/user/1")
    .contentType(MediaType.APPLICATION_JSON))
    .andExpect(status().isOk())
    .andExpect(jsonPath("$", hasSize(1)))
    .andExpect(jsonPath("$[0].username", is(bjorn.getUsername())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...