2016-12-08 6 views
1

Я хотел написать тест для моего контроллера mvc Spring. Я следую официальной документации от https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4 и поэтому только что обновил версию to 1.4 и добавил весеннюю загрузку, как предлагает документ.Spring boot 1.4 - Проверка API REST

я добавил следующие зависимости:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 

и родительским

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.2.RELEASE</version> 
    </parent> 

Мой LoginController API, который я хочу, чтобы проверить, выглядит так:

@RequestMapping(value = { "/login" }, method = RequestMethod.GET) 
    public @ResponseBody ResponseEntity<HashMap<String, Object>> login() { 


      // some logic to get Customer 
     return new ResponseEntity<>(customer, HttpStatus.OK); 

    } 

и согласно документации вот мой тест:

@RunWith(SpringRunner.class) 
@WebMvcTest(LoginController.class) 
@SpringBootTest 
public class AuthorizationAndAuthenticationTest extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private WebApplicationContext webApplicationContext; 
    private LoginController loginController; 
    @Autowired 
    private TestRestTemplate restTemplate; 

    @MockBean 
    private LoggingService loggingService; 

    @Test 
    public void test() { 
     given(this.loggingService.logInfoMessage("some Dummy Message", this.getClass())). 
     this.restTemplate.getForObject("/login", Object.class); 
    } 
} 

Проблемы: 1. Поскольку Логин Контроллер использует множество служб, я хотел поиздеваться их с помощью «дал» но это дает проблему компиляции, кажется, что я не хватает какой-то зависимость, хотя не уверен. 2.TestRestTemplate устарел и какова альтернатива? Я не нашел альтернативы.

Это первый раз, когда я буду писать тесты, используя Spring framework, поэтому я могу просмотреть некоторые детали.

Пожалуйста, помогите мне с этим.

ответ

3

Относительно проблемы # 1: Вы, наверное, забыли to call .withReturn при попытке окурок logInfoMessage:

given(this.loggingService.logInfoMessage("some Dummy Message", this.getClass())) 
    .willReturn("your desired value") 

Относительно проблемы # 2: org.springframework.boot.test.TestRestTemplate осуждается в пользу org.springframework.boot.test.web.client.TestRestTemplate.

Так что просто поменяйте пакет.

BTW, наиболее подходящая конструкция для тестирования концевых точек Spring MVC - MockMvc нет TestRestTemplate.

 Смежные вопросы

  • Нет связанных вопросов^_^