public TestContext(string path, Dictionary <string, string> query, Dictionary <string, string> form) { ResponseContentType = null; ResponseBuffer = new List <string>(); MockRequest = GetRequestForUrl(path, query, form); MockResponseHeaders = new Mock <IHeaderDictionary>(); MockResponseHeaders.Setup(m => m.Append("X-Content-Type-Options", "nosniff")); var mockResponseBody = new Mock <Stream>(); mockResponseBody.Setup(m => m.Write(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>())) .Callback <byte[], int, int>((buffer, offset, count) => ResponseBuffer.Add(Encoding.UTF8.GetString(buffer, offset, count))); MockResponse = new Mock <HttpResponse>(); MockResponse.SetupGet(m => m.Headers).Returns(MockResponseHeaders.Object); MockResponse.SetupGet(m => m.Body).Returns(mockResponseBody.Object); MockResponse.SetupSet(m => m.ContentType = It.IsAny <string>()) .Callback <string>(type => ResponseContentType = type); MockHttpContext = new Mock <HttpContext>(); MockHttpContext.SetupGet(m => m.Response).Returns(MockResponse.Object); MockHttpContext.SetupGet(m => m.Request).Returns(MockRequest.Object); MockHttpContext.SetupGet(m => m.RequestAborted).Returns(CancellationToken.None); MockRequest.SetupGet(m => m.HttpContext).Returns(MockHttpContext.Object); MockResponse.SetupGet(m => m.HttpContext).Returns(MockHttpContext.Object); }