【发布时间】:2019-03-28 01:02:10
【问题描述】:
我正在使用 xUnit 和 .NET Core 2.0。我想在我的单元测试中返回要断言的视图模型。
一个例子是:
Project p1 = GetViewModel<Project>(controller.Edit(1));
与
private T GetViewModel<T>(IActionResult result) where T : class
{
return (result as ViewResult)?.ViewData.Model as T;
}
当我使用 ViewResult 操作方法时,这有效。但是,我不知道如何将它用于 IActionResult 操作方法,例如在使用 UserManager 对象时异步使用的方法。
例如:
//This line causes a threading error (Cannot convert from Task<IActionResult> to IActionResult)
ProjectsListViewModel viewModel = GetViewModel<ProjectsListViewModel>(controller.List(2));
//unlike ViewModel, IActionResult does not have a ViewData property so this throws an error
ProjectsListViewModel result = controller.List(2).ViewData.Model as ProjectsListViewModel;
我的操作方法:
[Authorize]
public async Task<IActionResult> List(int page = 1)
{
var user = await userManager.FindByNameAsync(User.Identity.Name);
if(user != null)
{
IQueryable<Project> projectList = GetUserProjects(page, user);
var model = GetProjectsListViewModel(projectList, page, user);
return View(model);
}
TempData["message"] = "User not found";
return RedirectToAction("Index", "Home");
}
【问题讨论】:
标签: c# unit-testing asp.net-core xunit