我有这堂课:
public class TestService
{
public IObservable<int> GetObservable(int max)
{
var subject = new Subject<int>();
Task.Factory.StartNew(() =>
{
for (int i = 0; i < max; i++)
{
subject.OnNext(i);
}
subject.OnCompleted();
});
return subject;
}
}
我也为此编写了一个测试方法:
[TestMethod]
public void TestServiceTest1()
{
var testService = new TestService();
var i = 0;
var observable = testService.GetObservable(3);
observable.Subscribe(_ =>
{
i++;
});
observable.Wait();
Assert.AreEqual(i, 3);
}
但有时我会收到错误消息:序列在方法 Wait() 中不包含任何元素。
我建议在测试到达observable.Wait()行之前完成我的 IObservable。我怎样才能避免这个错误?