【问题标题】:Create Return() observable from FirstAsync()从 FirstAsync() 创建可观察的 Return()
【发布时间】:2017-06-12 13:47:45
【问题描述】:

在我当前的项目中,我的测试断言发生在第一个 OnNext 发生之前。如何在断言之前等待第一个结果?

Google 建议使用 TestScheduler。相关文档 (like this SO) 似乎表明我知道或关心时间值,而我不知道。

我也尝试过使用 await 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());
}

这里不知道如何进行。

【问题讨论】:

标签: c# unit-testing system.reactive


【解决方案1】:

如果您愿意阻止直到收到来自SqlStatements 的 OnNext,请使用:

Assert.AreEqual(expected, pipeline.SqlStatements.FirstAsync().Wait());

如果您可能什么都得不到,或者想要超时,则需要使用不同的方法。

【讨论】:

    猜你喜欢
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多