在Akka.NET中测试自我消息发送
本文关键字:消息 自我 测试 Akka NET | 更新日期: 2023-09-27 18:18:18
我是新来的。. NET,目前我在测试我的演员是否给自己发送了任何消息时遇到了困难。
这是我的演员代码:
public class MySuperActor : ReceiveActor
{
private readonly IActorRef _anotherActor;
public RoteadorDeContratosSuspensoActor(IActorRef anotherActor)
{
_anotherActor = anotherActor;
Receive<MySuperActorMessage>(m => HandleMessage(m));
Receive<MySuperActorSuperMessage>(m => HandleSuperMessage(m));
}
private void HandleMessage(MySuperActorMessage message)
{
Self.Tell(new MySuperActorSuperMessage(message));
}
private void HandleSuperMessage(MySuperActorSuperMessage message)
{
_anotherActor.Tell(new AnotherActorMessage(message));
}
}
这是我的测试代码
[TestFixture]
public class MySuperActorTest : TestKit
{
private IActorRef _sut;
private IActorFactory _actorFactory;
private List<Contrato> _contratos;
private Props _props;
[Test]
public void WhenReceiveASimpleMessageActorShouldSendSuperMessageToHimself()
{
var testProbe = CreateTestProbe();
Props props = Props.Create<MySuperActor>(testProbe);
var sut = ActorOf(_props);
sut.Tell(new MySuperActorMessage());
ExpectMsg<MySuperActorSuperMessage>();
}
}
我的测试总是中断以下消息:
Failed: Timeout 00:00:03 while waiting a type of akkanettestplaygroundMySuperActorSuperMessage
我如何检查我的演员是否正在发送另一条消息给他自己?
Alberto。
实际上,在测试方法中调用ExpectMsg()将期望消息被发送回测试参与者系统(我的意思是初始MySuperActorMessage被发送的上下文),而不是MySuperActor实例。在测试中创建的测试探针上期望AnotherActorMessage实例会更好(也更正确)。
下面是一个通过的测试方法:
[Test]
public void WhenReceiveASimpleMessageActorShouldSendSuperMessageToHimself()
{
var testProbe = this.CreateTestProbe();
var props = Props.Create<MySuperActor>(testProbe);
var sut = this.Sys.ActorOf(props);
sut.Tell(new MySuperActorMessage());
testProbe.ExpectMsg<AnotherActorMessage>();
}