2 回答
TA贡献1836条经验 获得超3个赞
根据异常消息所指的GitHub源代码,
protected UrlHelperBase(ActionContext actionContext)
{
if (actionContext == null)
{
throw new ArgumentNullException(nameof(actionContext));
}
ActionContext = actionContext;
AmbientValues = actionContext.RouteData.Values;
_routeValueDictionary = new RouteValueDictionary();
}
助手正在尝试访问actionContext.RouteData.Values原始示例中未提供的内容。
为测试流程完成提供必要的依赖项。
[Fact]
public async Task AuthenticateAsyncTest() {
// Arrange
var httpContext = new DefaultHttpContext();
var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());
var controller = new Controller(serviceProvider) {
Url = new UrlHelper(actionContext)
};
// Act
var result = await controller.Authenticate() as ViewResult;
// Assert
Assert.NotNull(result);
}
还要避免使用 async void 进行单元测试。改为使用Task。
TA贡献2051条经验 获得超10个赞
第二种选择是使用特定的构造函数。该文档声明它应该用于单元测试,更具体地说,当 ActionContext 只需要传入但不被消费代码使用时。
UrlHelper Url = new UrlHelper(new ActionContext { RouteData = new RouteData() });
感谢在 githhub 上重播的 navelDirt 和 pranavkm: https ://github.com/aspnet/AspNetCore/issues/6703
- 2 回答
- 0 关注
- 133 浏览
添加回答
举报