在继续进行其余的单元测试之前,我需要确保完成一项任务。
但这是在另一个方法中等待的任务(我正在对该方法进行单元测试。)
我试过等待任务或调用 task.Wait() 但每次测试都不起作用。
实际方法如下所示:
private async void DoStuff(long idToLookUp)
{
IOrder order = await orderService.LookUpIdAsync(idToLookUp);
OtherStuff = false;
}
我正在尝试像这样对它进行单元测试:
[TestMethod]
public void TestDoStuff()
{
//+ Arrange
var lookupTask = Task<IOrderableTest>.Factory.StartNew(() => validOrder);
orderService.LookUpIdAsync(Arg.Any<long>()).Returns(lookupTask);
//+ Act
myViewModel.DoStuff();
await lookupTask;
//+ Assert
myViewModel.OtherStuff.Should().BeFalse();
}
它失败的方式非常无益。它会导致另一个测试失败,并显示“测试运行时代理进程已停止”。(据我所知,这意味着后台线程在测试运行时抛出了异常。)
所以我想知道如何让我的代码等待单元测试完成。
我看到这个答案似乎相当不错。但它更适合于方法的调用。我不叫它,我只有任务。
注意:我的目标是使用 ansyc 包的 .NET 4.0。