单元测试 ASP.NET 核心 3.1 MVC 控制器 - 值不能为空。 (参数'provider')
Unit testing ASP.NET Core 3.1 MVC controller - value cannot be null. (Parameter 'provider')
我最近开始使用 .NET Core 3.1,因为我有 .NET 背景,只是想加快在新框架中对 MVC 控制器进行单元测试的速度。
在 .NET 中,创建一个 MVC 网站用于提供添加单元测试项目的选项,而 Core 则没有;所以我遵循了一些指南,并将这个简单的测试放在了 MSTest 中,用于 HomeController
索引视图。
HomeController.cs:
public class HomeController : Controller
{
public IActionResult Index()
{
return this.View();
}
}
HomeControllerTests.cs:
[TestMethod]
public void WhenIndexIsExecutedAsyncThenContentShouldBeReturned()
{
// arrange
var httpContext = new DefaultHttpContext();
var controller = new HomeController()
{
ControllerContext = new ControllerContext
{
HttpContext = httpContext
}
};
var actionContext = new ActionContext
{
HttpContext = httpContext
};
// act
var result = controller.Index().ExecuteResultAsync(actionContext);
// assert
Assert.IsNotNull(result);
Assert.IsNull(result.Exception);
}
我得到一个错误:
Value cannot be null. (Parameter 'provider')
而且我不知道是什么导致了错误。
为了我想要实现的目标,即对 return 具有某些内容的视图进行简单测试(后者属于集成测试),此代码足以满足第一次测试。我的实现在第一次尝试时过于复杂。
[TestMethod]
public void WhenIndexIsExecutedAsyncThenViewShouldNotBeNull()
{
// arrange
var controller = new HomeController();
// act
var result = controller.Index() as ViewResult;
// assert
Assert.IsNotNull(result);
}
我最近开始使用 .NET Core 3.1,因为我有 .NET 背景,只是想加快在新框架中对 MVC 控制器进行单元测试的速度。
在 .NET 中,创建一个 MVC 网站用于提供添加单元测试项目的选项,而 Core 则没有;所以我遵循了一些指南,并将这个简单的测试放在了 MSTest 中,用于 HomeController
索引视图。
HomeController.cs:
public class HomeController : Controller
{
public IActionResult Index()
{
return this.View();
}
}
HomeControllerTests.cs:
[TestMethod]
public void WhenIndexIsExecutedAsyncThenContentShouldBeReturned()
{
// arrange
var httpContext = new DefaultHttpContext();
var controller = new HomeController()
{
ControllerContext = new ControllerContext
{
HttpContext = httpContext
}
};
var actionContext = new ActionContext
{
HttpContext = httpContext
};
// act
var result = controller.Index().ExecuteResultAsync(actionContext);
// assert
Assert.IsNotNull(result);
Assert.IsNull(result.Exception);
}
我得到一个错误:
Value cannot be null. (Parameter 'provider')
而且我不知道是什么导致了错误。
为了我想要实现的目标,即对 return 具有某些内容的视图进行简单测试(后者属于集成测试),此代码足以满足第一次测试。我的实现在第一次尝试时过于复杂。
[TestMethod]
public void WhenIndexIsExecutedAsyncThenViewShouldNotBeNull()
{
// arrange
var controller = new HomeController();
// act
var result = controller.Index() as ViewResult;
// assert
Assert.IsNotNull(result);
}