Mocking HttpRequestBase.ServerVariables using Moq
Mocking is a very handy tool for unit testing code, especially when it comes to mocking the HttpContext
for web application code. However, it’s not as straight forward as you might think to mock the HttpRequestBase.ServerVariables
, however once you know what to do it really is pretty simple.
Here’s a code example, using moq, that shows how to create a mock HttpContextBase that contains a mock HttpRequestBase with a mock ServerVariables property:
public HttpContextBase CreateMockHttpContext()
{
var serverVaraibles = new NameValueCollection {
{ "SomeServerIPAddress", "127.0.0.1" },
{ "AnotherAppVariable", "Unit Test Value" }
};
var httpRequest = new Moq.Mock<HttpRequestBase>();
httpRequest.Setup(x => x.ServerVariables.Get(It.IsAny<string>()))
.Returns(string>(x => {
return serverVaraibles[x];
}));
var httpContext = (new Moq.Mock<HttpContextBase>());
httpContext.Setup(x => x.Request).Returns(httpRequest.Object);
}
Hopefully this points someone in the direction they are looking to be able to write more unit tests for code that contains dependencies on the HttpContext
.
Related Posts
-
C#: Case-Insensitive String Contains Best Practices
18 Oct 2024 -
C#: Read Text and JSON File Contents into Variable in Memory
18 Jun 2024 -
How to Cast an Int to an Enum in C#
17 Jun 2024