
@RequestMapping(value = "/member/register.kh", method = RequestMethod.POST)
public ModelAndView memberJoin(@ModelAttribute Member member, @RequestParam("post") String post,
@RequestParam("address1") String memberAddress1,
@RequestParam("address2") String memberAddress2,
ModelAndView mv) {
member.setMemberAddress(post + "," + memberAddress1+ ","+memberAddress2);
try {
int result = mService.registerMember(member);
if (result > 0) {
mv.setViewName("redirect:/home.kh");
} else {
mv.addObject("msg", "회원가입 실패");
mv.setViewName("common/errorPage");
}
} catch (Exception e) {
mv.addObject("msg", e.getMessage());
mv.setViewName("common/errorPage");
}
return mv;
}
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml",
"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
public class MemberContollerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mocMvc;
@Before
public void setUp() {
this.mocMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testMemberRegist() throws Exception {
Member member =new Member();
member.setMemberId("user11");
member.setMemberPw("pass11");
member.setMemberName("십일용자");
member.setMemberEmail("user11@user.com");
member.setMemberPhone("1111111");
try {
mocMvc.perform(
post("/member/register.kh")
.flashAttr("member", member)
.param("post","1234")
.param("address1","123123")
.param("address2","123123")
).andDo(print()).andExpect(status().isOk());
}catch (Exception e) {
// TODO: handle exception
}
}
}
웹에서 받는 값을 테스트 하기 때문에 어노테이션을 잘 적어주어야 한다.
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml",
"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
root-context와 servlet-context의 주소를 잘 적어준다.
runWith는 항상 필요하다
웹이기때문에 WebAppconfiguation을 써줘야한다.
@Autowired
private WebApplicationContext wac;
private MockMvc mocMvc;
@Before
public void setUp() {
this.mocMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
mocMvc를 미리 정의한다.
.flashAttr("member", member) 클래스를 매개변수로 받을경우 flashAttr을 써줘서 전달한다.
.param("post","1234")으로 입력받은 매개변수값을 전달한다.
MockHttpServletRequest:
HTTP Method = POST
Request URI = /member/register.kh
Parameters = {post=[1234], address1=[123123], address2=[123123]}
Headers = []
Body =
Session Attrs = {}Handler:
Type = com.kh.junspring.member.controller.MemberController
Method = com.kh.junspring.member.controller.MemberController#memberJoin(Member, String, String, String, ModelAndView)Async:
Async started = false
Async result = nullResolved Exception:
Type = nullModelAndView:
View name = redirect:/home.kh
View = null
Attribute = member
value = Member [memberId=user11, memberPw=pass11, memberName=십일용자, memberEmail=user11@user.com, memberPhone=1111111, memberAddress=1234,123123,123123]
errors = []
Attribute = modelAndView
value = ModelAndView [view="redirect:/home.kh"; model={}]
errors = []FlashMap:
Attributes = nullMockHttpServletResponse:
Status = 302
Error message = null
Headers = [Content-Language:"en", Location:"/home.kh"]
Content type = null
Body =
Forwarded URL = null
Redirected URL = /home.kh
Cookies = []