Ожидать вызов метода Async Void для модульного тестирования

У меня есть метод, который выглядит так:

private async void DoStuff(long idToLookUp)
{
    IOrder order = await orderService.LookUpIdAsync(idToLookUp);   

    // Close the search
    IsSearchShowing = false;
}    

//Other stuff in case you want to see it
public DelegateCommand<long> DoLookupCommand{ get; set; }
ViewModel()
{
     DoLookupCommand= new DelegateCommand<long>(DoStuff);
}    

Я пытаюсь провести модульное тестирование так:

[TestMethod]
public void TestDoStuff()
{
    //+ Arrange
    myViewModel.IsSearchShowing = true;

    // container is my Unity container and it setup in the init method.
    container.Resolve<IOrderService>().Returns(orderService);
    orderService = Substitute.For<IOrderService>();
    orderService.LookUpIdAsync(Arg.Any<long>())
                .Returns(new Task<IOrder>(() => null));

    //+ Act
    myViewModel.DoLookupCommand.Execute(0);

    //+ Assert
    myViewModel.IsSearchShowing.Should().BeFalse();
}

Мой ассист вызывается до того, как я закончу с макетом LookUpIdAsync. В моем обычном коде это именно то, что я хочу. Но для моего юнит-теста я этого не хочу.

Я конвертирую в Async / Await от использования BackgroundWorker. С фоновым работником это работало правильно, потому что я мог дождаться окончания работы BackgroundWorker.

Но, похоже, нет способа ждать асинхронного пустого метода ...

Как я могу протестировать этот метод?

Ответы на вопрос(7)

Ваш ответ на вопрос