I have the following method in my controller
private string GetPathBase()
{
return _configuration["ApiPathBase"] + $"/v{_httpContext.GetRequestedApiVersion().MajorVersion}";
}
I am not able to mock _httpContext.GetRquestedApiVersion method using moq, as it is an extension method. How can I fill httpContext with test version details, so that the original GetRequestedApiVersion method works?
var controllerContextMock = new Mock<ControllerContext>();
var query = new Mock<IQueryCollection>();
var request = new Mock<HttpRequest>();
var httpContext = new Mock<HttpContext>();
var response = new Mock<HttpResponse>();
query.SetupGet(q => q["api-version"]).Returns(new StringValues("42.0"));
request.SetupGet(r => r.Query).Returns(query.Object);
httpContext.SetupGet(c => c.Request).Returns(request.Object);
httpContext.SetupGet(c => c.Response).Returns(response.Object);
httpContext.SetupProperty(c => c.Items, new Dictionary<object, object>());
httpContext.SetupProperty(c => c.RequestServices, Mock.Of<IServiceProvider>());
controllerContextMock.Object.HttpContext = httpContext.Object;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With