아래와 같이 코드를 고려하십시오. GetBrands를 호출하면 속성 브랜드에 적절한 데이터가 할당됩니다.비동기 void 메서드를 테스트하는 방법
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());
}
을 읽기 /하십시오이를 참조하십시오 http://blogs.msdn.com/b/ lucian/archive/2013/02/18/talk-the-new-async-design-patterns.aspx 기본적으로 다음과 같이 말합니다 : 이벤트 핸들러를 제외하고는'async void '를 사용하지 마십시오. –
@DanielHilgarth, 감사합니다. 필자는 코드를 리팩토링했으며 매력처럼 작동합니다. – Shinbo