Код: Выделить всё
public string GetSubjectFromRoute(string routeKey)
{
return httpContextAccessor.HttpContext!.GetRouteValue(routeKey)!.ToString()!;
}
< /code>
Вот как я написал свой тест, < /p>
[Fact]
public void GetSubjectFromRoute_Should_Return_Route_Value()
{
// Arrange
var expectedSubject = "route-subject-123";
var routeKey = "subject";
var mockHttpContextAccessor = new Mock();
// Set up routing feature with route data
var data = new RouteValueDictionary()
{
{ routeKey, expectedSubject }
};
var routeData = new RouteData(data);
var routingFeature = new RoutingFeature()
{
RouteData = routeData
};
var features = new FeatureCollection();
features.Set(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);
}
< /code>
, когда я запускаю тест, я продолжаю получать NullReferenceException < /code>. < /p>
Исключение произошло: clr /system.nullreexexexcept Object. '
Я проверил исходный код фреймворта и настройка iroutingfeature Подробнее здесь: https://stackoverflow.com/questions/796 ... ttpcontext