【问题标题】:TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
【发布时间】:2018-04-23 12:30:04
【问题描述】:

我对 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 在测试中的使用位置以及它与被测主题的关系

标签: c# unit-testing moq mstest


【解决方案1】:

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

你很可能打算SetupmockStorage

替换

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 2021-06-14
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多