[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context
.Setup(c => c.Request)
.Returns(request.Object);
HomeController controller = new HomeController();
controller.HttpContext = context; //Here I am getting an error (read only).
...
}
my base controller has an overrride of the Initialize that get's this requestContext. I am trying to pass this along but I am not doing something right.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Where can I get more information on mocking my RequestContext and HttpContext using Moq? I am trying to mock cookies and the general context.
Create a request, response and put them both to HttpContext:
Here is an example of how you can set this up: Mocking HttpContext HttpRequest and HttpResponse for UnitTests (using Moq)
Note the extension methods which really help to simplify the usage of this mocking classes:
Here is an example of how to write a Unit Test using moq to check that an HttpModule is working as expected: Unit Test for HttpModule using Moq to wrap HttpRequest
Update: this API has been refactored to
HttpContext is read-only, but it is actually derived from the ControllerContext, which you can set.
Thanks user 0100110010101.
It worked for me and here i had an issue while writing the testcase for the below code :
And here is the lines which solved the problem
Might be helpful for the others.
Here's how I used the ControllerContext to pass a fake Application path: