【问题标题】:How to expect some messages and ignore others with akka.net testkit?如何使用 akka.net testkit 期待一些消息并忽略其他消息?
【发布时间】:2017-09-14 07:26:33
【问题描述】:

我有一个测试,可能会响应一些意外消息,但最终它必须响应特定的已知消息。 所以本质上我想要一个断言,它会在某个时间跨度内忽略其他消息,但期望一个已知消息,如下所示:

    [TestMethod]
    [TestCategory("Integration")]
    public async Task Should_fetch_fund_shareclass_and_details_from_test_service()
    {

        var testIsins = new HashSet<string> {"isin1", "isin2", "isin3"};

        var props = Props.Create(() => new DataFetchSupervisor());

        var actor = Sys.ActorOf(props, "fetchSupervisor");
        Within(TimeSpan.FromSeconds(30), () =>
        {
            actor.Tell(new StartDataFetch(testIsins));

            //ignore unexpected messages here

             var fetchComplteMsg = ExpectMsg<DataFetchComplete>();

        });
    }

所以现在这将失败,因为我在 DataFetchComplete 消息之前收到了一些其他消息。

一如既往,提前感谢您的帮助。

【问题讨论】:

    标签: testing akka.net


    【解决方案1】:

    Akka.TestKit 类有许多不同版本的ExcpectMsg 或等效检查器。您正在寻找的可能是FishForMessage。它需要一个谓词,只要它们无法通过谓词的条件,就会忽略所有传入的消息。找到传递消息后,此检查将完成,您的代码可能会继续。

    【讨论】:

    • 唉,不知道这个功能。这也是一个非常漂亮的。谢谢,非常感谢。
    【解决方案2】:

    您也可以使用TestKit.IgnoreMessages 方法,该方法将接受一个委托函数,指定您在等待目标消息时希望忽略哪些类型的消息。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多