我测试了一个可能会响应某些意外消息的actor,但最终它必须使用特定的已知消息进行响应。 所以本质上我想要一个断言,它会在某个时间内忽略其他消息但是期望一条已知消息,如下所示:
[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消息之前得到了一些其他消息。
一如既往,提前感谢您的帮助。
答案 0 :(得分:3)
Akka.TestKit类有许多不同版本的ExcpectMsg
或等效的检查器。您正在寻找的那个可能是FishForMessage。它需要一个谓词并且将忽略所有传入的消息,只要它们不能通过谓词的条件。一旦发现传递消息,该检查将完成,您的代码可能会继续。
答案 1 :(得分:1)
您还可以使用TestKit.IgnoreMessages方法,该方法将接受委托功能,指定在等待目标消息时您希望忽略哪些类型的消息。