이제 controller도 잘 작동되는지 테스트......
앞선 과정은 이미 했고.......test 폴더에 한개 더 만든다.

이땐 controllerTest 클래스는 그냥 클래스 파일이다. 어차피 다 그냥 타이밍 해서 설치할게 없었다고 하셨다.
package com.kh.junspring.member;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
//Controller 및 웹환경에서 사용되는 빈을 자동 생성 등록
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"file:src/main/webapp/WEB-INF/spring/root-context.xml"
, "file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml"})
public class MemberControllerTest {
@Autowired
private WebApplicationContext wac; //context ==객체에 대한 정보가 들어가 있다. 테스트를 위한 준비 객체
private MockMvc mockMvc;
@Before //JUINT껄로 임포트
public void setup() {
//mockMvc 사용하기 위해 builder와 wac객체를 이용하여 setup!
this.mockMvc=MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testMemberRegister() throws Exception{
try {
//mockMuc.perform(post(url)) ...perform 어떤 메소드,,, 어떤 url인가를 지정하는 것
mockMvc.perform(post("/memberRegister.do")
.param("userId","khadmin")
.param("passwd","qwer1234")
.param("name","김경호")
.param("email","khadmin.com")
.param("tel","01099998888"))
.andDo(print()) //andDo 결과 확인을 위해...print 콘솔에 출력
.andExpect(status().isOk()); //성공 할꺼를 예상하고 결과값중에 출력란것..
} catch (Exception e) {
}
}
}
Mockmvc는 MVC패턴의 모조품같은것으로 TEST를 하기위한 객체라고 함...
이미 만들었던 memberController가 복잡해서 간단하게 한게 더 만들었다.
public class MemberController {
@Autowired
private MemberService mService;
//text를 위한 메소드
@RequestMapping(value="/memberRegister.do", method=RequestMethod.POST)
public ModelAndView memberRegister(ModelAndView mv
, @RequestParam("userId") String userId
, @RequestParam("passwd") String passwd
, @RequestParam("name") String name
, @RequestParam("email") String email
, @RequestParam("tel") String tel) {
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("userId", userId);
paramMap.put("passwd", passwd);
paramMap.put("name", name);
paramMap.put("email", email);
paramMap.put("tel", tel);
int result = mService.registerMember(paramMap);
String str="";
if(result > 0) {
str="회원가입 성공!";
}else {
str="회원가입 실패!";
}
mv.addObject("msg", str);
mv.setViewName("common/errorPage");
return mv;
}
같은 메소드에 멤버변수를 변경해서 진행.......가능하게 만드는 건 오버로드....(복습)^^
db까지 가지는 않게 stoerLogic에서 그냥 리턴값 1로 만들어서 진행됨.
결과내용은 콘솔에 띄어줌.
MockHttpServletRequest:
HTTP Method = POST
Request URI = /memberRegister.do
Parameters = {userId=[khadmin], passwd=[qwer1234], name=[김경호], email=[khadmin.com], tel=[01099998888]}
Headers = []
Body = <no character encoding set>
Session Attrs = {}
Handler:
Type = com.kh.junspring.member.controller.MemberController
Method = public org.springframework.web.servlet.ModelAndView com.kh.junspring.member.controller.MemberController.memberRegister(org.springframework.web.servlet.ModelAndView,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = common/errorPage
View = null
Attribute = modelAndView
value = ModelAndView [view="common/errorPage"; model={msg=회원가입 성공!}]
errors = []
Attribute = msg
value = 회원가입 성공!
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = [Content-Language:"en"]
Content type = null
Body =
Forwarded URL = /WEB-INF/views/common/errorPage.jsp
Redirected URL = null
Cookies = []
일단 잘 출력된다.. 감사하다^^
'SPRING' 카테고리의 다른 글
| 이클립스 부트 mariaDB설치 ...에러백만돌이 (0) | 2023.05.19 |
|---|---|
| LOG를 대체하는 logger (0) | 2022.11.10 |
| LOG4j 등록 (0) | 2022.10.11 |
| AOP를 이용한 트랜젝션 (0) | 2022.10.11 |
| 예외처리 어노테이션 (0) | 2022.10.07 |