TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

我是 MSTest 的新手,在 运行 进行以下测试时出现以下错误。不过,我无法从例外中获益良多。

请求您的帮助!我也在下面附上测试方法代码。

[TestMethod]
public async Task GetReturnsAllSolutionsForAdminUser()
{
    var storageService = new Mock<IStorageService>();
    AuthenticatedUsername = "xxx@yyy.com";

    var mockStorage = new Mock<IStorageService>();
    var mockGeneralServices = new Mock<IGeneralServices>();
    var mockDesignerEngine = new Mock<IDesignerEngine>();
    var mockExcelUploadService = new Mock<ISolutionBuilderFromExcelService>();


    var solutions = new List<Solution>(
        new[]
        {
            new Solution
            {
                Id = "10000000-0000-0000-0000-000000000000",
                Name = "Solution 1",
                Description = "Description Of Solution 1",
                ResourceGroups = new NamedItemList<ResourceGroup>(new[] {new ResourceGroup{Name="Solution 1:ResourceGroup 1"}}),
                CreatedBy = "xxx@yyy.com",
                CreatedOn = DateTime.Parse("05/05/2018"),
                Version = "1.0.1",
                TaggingEnabled = true,
            }
        }
    );
    storageService.Setup(it => it.ReadItemsAsync<Solution>()).ReturnsAsync(solutions);


    var controller = new SolutionsController(mockGeneralServices.Object, mockStorage.Object, mockDesignerEngine.Object, mockExcelUploadService.Object)
    {
        ControllerContext = new ControllerContext
        {
            HttpContext = GetMockHttpContext(CloudSuiteRoles.AdminRole, CloudSuiteRoles.UserRole).Object
        }
    };

    var result = await controller.Get().ConfigureAwait(false) as JsonResult;
    var items = result.Value as IEnumerable<dynamic>;//
    Assert.IsNotNull(items);
    Assert.AreEqual(solutions.Count(), items.Count());
}

看不到 storageService 在测试中的使用位置以及它与测试对象的关系。

您很可能是想 Setup mockStorage

替换

storageService.Setup(it => it.ReadItemsAsync<Solution>()).ReturnsAsync(solutions);

mockStorage.Setup(_ => _.ReadItemsAsync<Solution>()).ReturnsAsync(solutions);

因为那是被注入到正在测试的控制器中的那个。

错误是因为被调用的asyc方法没有被mock过,方法无法完成。