작성
·
529
1
강의를 보고 소스를 똑같이 입력하였는데요.
테스트 결과값이 다르게 나오게되어 문의드립니다.
java.lang.AssertionError: Response content expected:<hello keesun> but was:<hello 1>
Expected :hello keesun
Actual :hello 1
break point를 찍고 person객체와 savedPerson객체가 동일한 값이 들어있는걸 확인하였습니다.
컨버터가 동작을 안한건지
테스트 결과값을 toString을 찍어보면 id=null, name='1'로 나옵니다.
뭐가 문제인건가요?..ㅠ
테스트 코드도 첨부해드립니다.
@SpringBootTest
@AutoConfigureMockMvc
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Autowired
PersonRepository personRepository;
@Test
public void hello() throws Exception {
Person person = new Person();
person.setName("keesun");
Person savedPerson = personRepository.save(person);
this.mockMvc.perform(get("/hello")
.param("id", savedPerson.getId().toString()))
.andDo(print())
.andExpect(content().string("hello keesun"));
}
}
답변 6
1
코드를 보니까 포매터를 만들어 두셨네요. 그게 id로 들어오는 문자열을 Person으로 바이딩할 때 해당 포매터가 사용되서 그렇습니다. 그걸 빈으로 등록하지 마시고 테스트 실행하면 잘 될겁니다.
0
0
0
아.. name에 1이 들어갔네요? 프로젝트 전체 코드를 깃헙에 올려서 공유해 주세요.
이상하네요. 이 코드를 보면 name에 keesun을 넣었는데 어떻게 1이 들어가있는건지...
Person person = new Person();
person.setName("keesun");
Person savedPerson = personRepository.save(person);
0
person의 name을 리턴한것을 확인하였습니다.
@RestController
public class SampleController {
@GetMapping("/hello")
public String hello(@RequestParam("id") Person person) {
return "hello " + person.getName();
}
}
0