C# 单元测试任务<;ViewResult>;
以前,我有一个同步控制器动作方法,它有一个单元测试C# 单元测试任务<;ViewResult>;,c#,asp.net-mvc,unit-testing,xunit,C#,Asp.net Mvc,Unit Testing,Xunit,以前,我有一个同步控制器动作方法,它有一个单元测试 ManageBillsViewModel result = controller.ManageBills(2).ViewData.Model as ManageBillsViewModel; 一切都很好。当操作方法更改为异步Task方法时,上述行中断 我想我可以通过添加.Result使其工作,如中所示 ManageBillsViewModel result = controller.ManageBills(2).Result.ViewData
ManageBillsViewModel result = controller.ManageBills(2).ViewData.Model as ManageBillsViewModel;
一切都很好。当操作方法更改为异步Task
方法时,上述行中断
我想我可以通过添加.Result
使其工作,如中所示
ManageBillsViewModel result = controller.ManageBills(2).Result.ViewData.Model as ManageBillsViewModel;
但这并不奏效
如何正确访问异步方法的
ViewData.Model
?使代码始终异步,并等待调用控制器操作返回的任务。该测试还需要进行异步
[Fact]
public async Task MyTestMethod() {
//...
//Act
var viewResult = await controller.ManageBills(2);
ManageBillsViewModel result = viewResult.ViewData.Model as ManageBillsViewModel;
//Assert
//...
}
阻塞调用,如.Result
和.Wait()
会导致死锁,应该避免这种情况异步方法返回任务,您可以使用
var task = controller.ManageBills(2);
task.Wait();
var result = task.Result;
或
var result = await controller.ManageBills(2);