如何通过单元测试覆盖Akka.Net演员SupervisorStrategy?

时间:2017-04-20 09:32:52

标签: c# unit-testing akka akka.net

是否可以测试我的演员使用特定的var spliceJoin = [];?例如。我想确定在child actor抛出异常之后,它将被停止并且父actor将收到SupervisionStrategy消息。

我试图以这种方式做到:

Terminated

不幸的是,它不起作用。似乎[TestFixture] public class SupervisionStrategyTest : TestKit { public SupervisionStrategyTest() : base(@"akka.suppress-json-serializer-warning=true") { XmlConfigurator.Configure(); } [Test] public void Test() { var parent = Sys.ActorOf(Props.Create<ParentActor>()); var testProbe = CreateTestProbe("subscriber"); parent.Tell(testProbe); parent.Tell(new object()); var t = testProbe.ExpectMsg<ChildActor.Terminated>(10.Seconds()); } public class ParentActor : ReceiveActor { private TestProbe parent; public ParentActor() { var child = Context.ActorOf<ChildActor>(); Receive<TestProbe>( m => { parent = m; }); // when child actor stopped we should receive this, but we don't Receive<Terminated>( m => { parent.Tell(new ChildActor.Terminated()); }); ReceiveAny( m => { child.Tell(new object()); }); } protected override SupervisorStrategy SupervisorStrategy() { return new OneForOneStrategy( maxNrOfRetries: 0, // no restarts withinTimeRange: TimeSpan.FromSeconds(30), localOnlyDecider: x => Directive.Stop); } } public class ChildActor : UntypedActor { protected override void OnReceive(object message) { throw new Exception("Test"); } public class Terminated { } } } 无法从akka系统获取Parent消息。它是TestKit中的错误还是我遗漏了什么?

0 个答案:

没有答案