3

以下のコードを参考にしてください。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());
}
4

2 に答える 2

1

モデル (DTO) はそれ自体を生成しています (データ アクセス)。これは、1 つのクラスで行うには多すぎます。通常、 「一体どうやってこれをテストできるのか」と自問するときは、リファクタリングの時です。別のデータ アクセス クラスを作成します。

BrandsViewModel viewModel = new BrandsViewModel();
var brandAccess = new BrandsDataAccess();
viewModel.Brands = await brandAccess.GetAllBrands();
Assert.IsTrue(viewModel.Brands.Any());

これでテストできますBrandsDataAccess.GetAllBrands()

于 2013-03-21T08:00:03.113 に答える