Данные не записываются в базу данных H2 во время тестирования с помощью JUnit - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь написать тест JUnit для моего модуля Spring, увидев, что моя логика работает с использованием SwaggerUI.

Однако происходит то, что я пропускаю некоторые данные в моем экземпляре H2 (используется только для тестов), и я не понимаю, почему.

Вот что я делаю:

MyObjectController.java

@PostMapping("/myobject")
public void save(HttpServletRequest request, HttpServletResponse response) throws Exception {  
    // Save and get id
    Integer id = service.save();
    URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(id).toUri();

    // Run async
    service.run(id); // At this stage, id = 1 because the insert completed correctly

    // Return id
    response.setHeader(HttpHeaders.LOCATION, location.toString());
}

MyObjectService.java

@Async
@Transactional
public void run(Integer id) throws Exception { // As above, id = 1 but this time data is not there!
    // Retrieve and run
    Optional<MyObject> myObject = myObjectDao.findById(id);
    if (!myObject.isPresent()) {
        throw new NotFound();
    }
    ...
}

/myobject конечная точка вызывается с использованием MockMVC, и после ее правильного вызова возвращается ожидаемый идентификатор.

Если я ставлю точку останова в начале service.run(Integer id) и звоню /myobject с помощью SwaggerUI, я вижу, что все в порядке, но этого не происходит при работе в JUnit.

Ребята, не могли бы вы помочь мне с этим?

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