일부 테스트 코드를 작성하고 있습니다. 스프링 부트 1.5.9.RELEASE를 사용합니다.spring-data-jpa 및 MockMvc로 봄 부팅 junit 테스트
이 sampleUser에서 내 테스트 코드
@Test
public void shouldUpdateUserName() throws JsonProcessingException, Exception {
for(UserDto.Request request: userRequests) {
User user = new User();
user.setName(request.getName());
user.setCity(cityRepository.findTopByName(request.getCity()));
userRepository.save(user);
}
UserDto.Request sample = userRequests.get(new Random().nextInt(count));
User sampleUser = userRepository.findTopByName(sample.getName());
String userNameAfterUpdate = sampleUser.getName() + Thread.currentThread().getName();
UserDto.Request request = new UserDto.Request();
request.setCity(sampleUser.getCity().getName());
request.setName(userNameAfterUpdate);
mockMvc.perform(put("/user/" + sampleUser.getId())
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andDo(print())
.andExpect(status().isOk());
assertNotEquals(sampleUser.getName(), userRepository.findOne(sampleUser.getId()).getName());
assertEquals(userNameAfterUpdate, userRepository.findOne(sampleUser.getId()).getName());
}
입니다. 나는 사용자 객체를 찾아서 얻는다. 및 mockMvc.perform(). ID로 사용자를 찾아서 업데이트합니다.
하지만 동일한 개체가 표시됩니다. mockMvc는 sampleUser 객체를 업데이트합니다. 그래서 assertNotEquals 테스트가 실패합니다.
어떻게 일어 났습니까? 누군가 도와주세요.
일반적으로 데이터 소스뿐만 아니라 @Transactional, 트랜잭션을 사용하는 위치에 대한 추가 정보를 제공 할 수 있습니까? –