Akka.net TestKit同步行为



我有以下C#代码来测试Akka.net Actor的行为。该语句productActor.Tell(new ChangeActiveStatus(true));预计将是一个阻止呼叫(TestKit使其成为此博客的同步调用),但我看到它立即返回。结果,尽管Activestatus将在以后更改。

[TestMethod]
public void ProductActorUnitTests_CheckFor_ActiveStatusChanged()
{
    var productActor = ActorOfAsTestActorRef<ProductActor>();
    Assert.IsTrue(ProductActor.UnderlyingActor.ActiveStatus == false, "The initial ActiveStatus is expected to be FALSE.");
    productActor.Tell(new ChangeActiveStatus(true));
    Assert.IsTrue(productActor.UnderlyingActor.ActiveStatus == true, "The new ActiveStatus is expected to be TRUE.");
}

******更新*****

带有线程的以下代码。

[TestMethod]
public void ProductActorUnitTests_CheckFor_ActiveStatusChanged()
{
    var productActor = ActorOfAsTestActorRef<ProductActor>();
    Assert.IsTrue(ProductActor.UnderlyingActor.ActiveStatus == false, "The initial ActiveStatus is expected to be FALSE.");
    productActor.Tell(new ChangeActiveStatus(true));
    Thread.Sleep(10000);
    Assert.IsTrue(productActor.UnderlyingActor.ActiveStatus == true, "The new ActiveStatus is expected to be TRUE.");
}

我只看到两个参与者的akka.net单元测试。显示该示例的博客(在原始问题中)只有两个演员,因此由于操作是同步的,因此它将起作用。如果系统中有多个参与者,例如, Actor A消息b swery cator c Actor c ereads conders a says Actor a再次 ,消息传递会异步发生,因此必须等到所有操作完成。

相关内容

  • 没有找到相关文章

最新更新