相关疑难解决方法(0)

等待void异步方法

我怎么能等待void async方法完成它的工作?

例如,我有一个如下功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想确保在继续其他地方之前已经加载了所有内容.

c# asynchronous

138
推荐指数
4
解决办法
10万
查看次数

等待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);
}    
Run Code Online (Sandbox Code Playgroud)

我试图对它进行单元测试:

[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(); …
Run Code Online (Sandbox Code Playgroud)

.net c# unit-testing async-await

63
推荐指数
6
解决办法
8万
查看次数

标签 统计

c# ×2

.net ×1

async-await ×1

asynchronous ×1

unit-testing ×1