Ошибка Mockito thenThrow () - PullRequest
0 голосов
/ 01 июня 2018

Я разрабатываю простой API Restful с использованием Spring и пытаюсь следовать модели TDD.У меня есть BookController, который возвращает книги по деталям.У него есть один сервисный вызов внутри контроллера, который я высмеял в классе Test.

 @Autowired
BookService bookService;

@RequestMapping(value = "/books/getDetails/{bookName}", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public ResponseEntity<Books> getBooksDetailsByName(@PathVariable(value = "bookName") String bookName){

    try {
        Books resultBooks = bookService.findBookByName(bookName);
        if (resultBooks != null) {
            return new ResponseEntity<>(resultBooks, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }
    catch(Exception e){
            throw new RuntimeException();
        }
}

и тест выглядит как

 @Test(expected = Exception.class)
public void getBookDetails_shouldReturn500() throws Exception {
    String bookName = "First";
    //System.out.println("hello1");
    when(bookService.findBookByName(any())).thenThrow(new Exception());
    //System.out.println("hello2");
    ResponseEntity<Books> responseEntity = bookController.getBooksDetailsByName(bookName);
    //System.out.println("hello3");
    Assert.assertTrue(responseEntity.getStatusCode().is2xxSuccessful());
    //System.out.println("hello4");
}

Когда я запускаю или отлаживаю тестовый пример, он не запускается после when (). Thenthrow ().В приведенном выше коде, если я укажу последний оператор, который печатается, это hello1.И независимо от is2xx или is5xx тестовый пример проходит успешно.Пожалуйста, помогите мне понять проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...