Mockup class를 이용한 Routing test code
URL 테스트는 Rest 및 개발에서 가장 중요한 사항중 하나인데. 테스트코드보다 직접 실행해서 한번 테스트해보는 경우가 더 많은 것 같다.;
이 code를 이용한 test code는 다음과 같이 적을 수 있다.
URL의 테스트가 꼭 필요하긴 한데.. 요즘들어 일을 이런쪽으로 전혀 안하고 있다는 아쉬움이 많이 들고 있는듯.;
URL 테스트는 Rest 및 개발에서 가장 중요한 사항중 하나인데. 테스트코드보다 직접 실행해서 한번 테스트해보는 경우가 더 많은 것 같다.;
01.
private
string
GetOutboundUrl(
object
routeValues)
02.
{
03.
// Get route configuration and mock request context
04.
RouteCollection routes =
new
RouteCollection();
05.
MvcApplication.RegisterRoutes(routes);
06.
var mockHttpContext =
new
Moq.Mock<httpcontextbase>();
07.
var mockRequest =
new
Moq.Mock<httprequestbase>();
08.
var fakeResponse =
new
FakeResponse();
09.
mockHttpContext.Setup(x => x.Request).Returns(mockRequest.Object);
10.
mockHttpContext.Setup(x => x.Response).Returns(fakeResponse);
11.
mockRequest.Setup(x => x.ApplicationPath).Returns(
"/"
);
12.
// Generate the outbound URL
13.
var ctx =
new
RequestContext(mockHttpContext.Object,
new
RouteData());
14.
return
routes.GetVirtualPath(ctx,
new
RouteValueDictionary(routeValues)).VirtualPath;
15.
}
16.
</httprequestbase></httpcontextbase>
이 code를 이용한 test code는 다음과 같이 적을 수 있다.
01.
[Test]
02.
public
void
Football_Page1_Is_At_Slash_Football()
03.
{
04.
Assert.AreEqual(
"/Football"
, GetOutboundUrl(
new
05.
{
06.
controller =
"Product"
,
07.
action =
"List"
,
08.
category =
"Football"
,
09.
page = 1
10.
}));
11.
}
URL의 테스트가 꼭 필요하긴 한데.. 요즘들어 일을 이런쪽으로 전혀 안하고 있다는 아쉬움이 많이 들고 있는듯.;