【发布时间】:2013-03-21 18:28:23
【问题描述】:
请考虑如下所示的代码。通过调用 GetBrands,将为属性 Brands 分配适当的数据。
public class BrandsViewModel : ViewModelBase
{
private IEnumerable<Brand> _brands;
public IEnumerable<Brand> Brands
{
get { return _brands; }
set { SetProperty(ref _brands, value); }
}
public async void GetBrands()
{
// ......
Brands = await _dataHelper.GetFavoriteBrands();
// ......
}
}
但是如果我按如下所示进行测试,则测试失败。如何等待 GetBrands 方法中的异步调用?
[TestMethod]
public void AllBrandsTest()
{
BrandsViewModel viewModel = new BrandsViewModel();
viewModel.GetBrands();
Assert.IsTrue(viewModel.Brands.Any());
}
【问题讨论】:
-
请阅读/查看这个:blogs.msdn.com/b/lucian/archive/2013/02/18/… 它基本上说:除了事件处理程序,不要使用
async void。 -
@DanielHilgarth 谢谢你,丹尼尔。我重构了我的代码,它就像一个魅力。
标签: c# unit-testing async-await