我有一个使用一些异步数据访问代码的 mvc 5 控制器。我已经使用 nUnit 编写了一个简单的测试。测试没有完成,它只是旋转直到我取消它。afaik 我已经正确设置了测试;它正在等待控制器操作被标记为异步并返回一个任务。我错过了什么吗?有趣的是,当我使用 moq 模拟依赖项时,该测试有效,但如果我使用实际依赖项进行集成测试,它只会永远旋转。
一个简化的测试:
[Test]
public async Task Get_WhenProductHasData_ReturnsView()
{
// Arrange
...
// Act
PartialViewResult actualResult = await _controller.Widget(_productId1) as PartialViewResult;
// Assert
Assert.That(actualResult, Is.Not.Null);
...
}
这是简化的控制器
public async Task<ActionResult> Widget(string productId)
{
ProductStats stats = await _statsService.GetProductStatsAsync(productId);
return PartialView(stats);
}