You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单元测试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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:59:36