我有这个课我要单元测试:
public class SomeClass
{
public void Foo()
{
Bar();
}
private void Bar()
{
Task.Factory.StartNew(() =>
{
// Do something that takes some time (e.g. an HTTP request)
});
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的单元测试的样子:
[TestMethod]
public void TestFoo()
{
// Arrange
var obj = new SomeClass();
// Act
obj.Foo();
obj.Foo();
obj.Foo();
// Assert
/* I need something to wait on all tasks to finish */
Assert.IsTrue(...);
}
Run Code Online (Sandbox Code Playgroud)
所以,我需要让单元测试线程等到Bar方法中启动的所有任务都完成了他们的工作,然后再开始我的断言.
重要提示:我无法改变SomeClass
我怎样才能做到这一点?