【发布时间】:2017-08-18 09:04:51
【问题描述】:
我有一个用 ASP.NET Core 编写的基本 CRUD 应用程序,示例控制器操作如下所示:
public IActionResult Sheet(Guid characterId)
{
var character = _repository.GetCharacter(characterId);
// omit validation for brevity
return View("Sheet", new ViewModel(character, true, true));
}
还有一个示例单元测试:
[Fact]
public void TestSheet()
{
// Arrange stuff and mock setup
// Act
var result = _controller.Sheet(characterId) as ViewResult;
// Assert
Assert.NotNull(result);
// assert ViewModel constructor called with x arguments
}
其他研究似乎建议对对象进行模拟,但这不适合这种情况。
我可以简单地让ViewModel 的构造函数设置几个getter 属性,但这似乎是在钻研测试ViewModel 的领域,而不是控制器。控制器不应该关心 ViewModel 对传递给它的值做了什么,我认为测试也不应该 - 测试正在测试控制器是否正常运行,并且应该只测试它是否传递了正确的值.几个 getter 属性当然可以实现这一点,但它在概念上似乎是错误的。
【问题讨论】:
标签: c# unit-testing asp.net-core moq