c# - Mock HttpContext using moq for unit test -
this question has answer here:
i need mock of httpcontext unit testing. i'm struggling it.
i'm making method change sessionid programmatically sessionidmanager. , sessionidmanager requires httpcontext not httpcontextbase.
but couldn't find example make mock of httpcontext. examples out there make httpcontextbase.
i tried below didn't work
httpcontext httpcontext = mock<httpcontext>(); httpcontext httpcontext = (httpcontext)getmockhttpcontextbase(); public httpcontextbase getmockhttpcontextbase() { var context = new mock<httpcontextbase>(); var request = new mock<httprequestbase>(); var response = new mock<httpresponsebase>(); var session = new mock<httpsessionstatebase>(); var application = new mock<httpapplication>(); var httpcontext = new mock<httpcontext>(); var server = new mock<httpserverutilitybase>(); var user = new mock<iprincipal>(); var identity = new mock<iidentity>(); var urlhelper = new mock<urlhelper>(); var routes = new routecollection(); var requestcontext = new mock<requestcontext>(); requestcontext.setup(x => x.httpcontext).returns(context.object); context.setup(ctx => ctx.request).returns(request.object); context.setup(ctx => ctx.response).returns(response.object); context.setup(ctx => ctx.session).returns(session.object); application.setup(x => x.context).returns(httpcontext.object); context.setup(ctx => ctx.applicationinstance).returns(application.object); context.setup(ctx => ctx.server).returns(server.object); context.setup(ctx => ctx.user).returns(user.object); user.setup(ctx => ctx.identity).returns(identity.object); identity.setup(id => id.isauthenticated).returns(true); identity.setup(id => id.name).returns("test"); request.setup(req => req.url).returns(new uri("http://tempuri.org")); request.setup(req => req.requestcontext).returns(requestcontext.object); requestcontext.setup(x => x.routedata).returns(new routedata()); request.setupget(req => req.headers).returns(new namevaluecollection()); return context.object; }
is there way make mock of httpcontext or use httpcontextbase httpcontext?
please me anyone.
this common question here , root of problem don't mock types don't own. rather complicated mocks try , reproduce behavior of class didn't write (which means you're guessing , need mock), introduce abstraction between code , external object httpcontext , mock abstraction. 1 of pioneers of mock objects says:
the key me when joe walnes came radical notion of "don't mock types don't own". means: stop jumping through hoops work closed-world libraries, use tests discover objects , each other.
http://higherorderlogic.com/2004/02/the-big-idea-is-messaging/
Comments
Post a Comment