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

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -