在我当前的项目中,我的Test's Assert在第一个OnNext发生之前就已经出现了问题。如何在断言之前等待第一个结果?
Google建议使用TestScheduler。相关文档(like this SO)似乎表明我知道或关心时间值,我不知道。
我也尝试过等待pipeline.SqlStatements.FirstAsync(),但是这阻止了整个测试并且什么都没有返回。
[TestMethod]
public void Process_Fileinfos_BatchesHaveSql()
{
var output = new List<string>();
var templates = new[] {new FileInfo(@"DropDatabase.txt")};
var pipeline = new TemplatesPipeline();
pipeline.SqlStatements.Subscribe(value => output.Add(value));
pipeline.Process(templates);
var expected = "dropdatabasescriptcontent";
Assert.AreEqual(expected, output.First());
}
不确定如何在这里取得进展。
答案 0 :(得分:0)
如果您在SqlStatements
获得OnNext之前很乐意阻止,请使用:
Assert.AreEqual(expected, pipeline.SqlStatements.FirstAsync().Wait());
如果您没有得到任何东西,或者想要暂停,您需要使用不同的方法。