单元测试HttpContext中RoutingFeature的GetRouteValue方法时遭遇NullReferenceException的问题排查求助
单元测试HttpContext中RoutingFeature的GetRouteValue方法时遭遇NullReferenceException的问题排查求助
各位大佬好,我最近在给一个依赖HttpContext的方法写单元测试时,一直碰到NullReferenceException,折腾了好久都没解决,想请大家帮忙看看哪里出问题了。
首先是要测试的目标方法:
public string GetSubjectFromRoute(string routeKey) { return httpContextAccessor.HttpContext!.GetRouteValue(routeKey)!.ToString()!; }
我写的单元测试代码如下:
[Fact] public void GetSubjectFromRoute_Should_Return_Route_Value() { // Arrange var expectedSubject = "route-subject-123"; var routeKey = "subject"; var mockHttpContextAccessor = new Mock<IHttpContextAccessor>(); // 配置路由相关的Feature var data = new RouteValueDictionary() { { routeKey, expectedSubject } }; var routeData = new RouteData(data); var routingFeature = new RoutingFeature() { RouteData = routeData }; var features = new FeatureCollection(); features.Set<IRoutingFeature>(routingFeature); var httpContext = new DefaultHttpContext(features); mockHttpContextAccessor.Setup(x => x.HttpContext).Returns(httpContext); var userContext = new UserContext(mockHttpContextAccessor.Object); // Act var result = userContext.GetSubjectFromRoute(routeKey); // Assert Assert.Equal(expectedSubject, result); }
每次运行这个测试,都会抛出NullReferenceException,具体错误信息是:
Exception has occurred: CLR/System.NullReferenceException
An exception of type 'System.NullReferenceException' occurred in Infrastructure.dll but was not handled in user code: 'Object reference not set to an instance of an object.'
我已经去翻了ASP.NET Core框架的源代码,也按照要求配置了IRoutingFeature的必要信息,但还是会触发这个空引用异常。有没有大佬能指点下我到底漏掉了什么配置?
内容来源于stack exchange
相关产品推荐
相关产品推荐

