Akka.net 如何使用 TestKit 测试 DistributedPubSub?
How to test DistributedPubSub with the TestKit in Akka.net?
我正在对使用集群工具的 actor 进行单元测试 DistributedPubSub
。对于测试,我使用 Akka.net 的 TestKit。
显然,在TestKit中,系统actorSys
没有DistributedPubSub
工具,访问时会抛出空指针异常。
这是将 actor 创建为 Sys 的子级时失败的代码:
var mediador = DistributedPubSub.Get(Context.System).Mediator;
有没有办法模拟它或创建一个 actor 探针以将其与 Sys
一起使用?
我认为问题在于,当您将 HOCON 传递给基础 class 构造函数时,在使用任何 TestKit classes 时,您需要在 HOCON 中指定以下内容:
public class DistributedPubSubMediatorSpec : TestKit
{
public DistributedPubSubMediatorSpec() : base(GetConfig()) { }
public static Config GetConfig()
{
return ConfigurationFactory.ParseString("akka.actor.provider = \"Akka.Cluster.ClusterActorRefProvider, Akka.Cluster\"");
}
}
我在 Akka.NET 此处添加了一个拉取请求来测试此问题,规范通过了:https://github.com/akkadotnet/akka.net/pull/2424
我正在对使用集群工具的 actor 进行单元测试 DistributedPubSub
。对于测试,我使用 Akka.net 的 TestKit。
显然,在TestKit中,系统actorSys
没有DistributedPubSub
工具,访问时会抛出空指针异常。
这是将 actor 创建为 Sys 的子级时失败的代码:
var mediador = DistributedPubSub.Get(Context.System).Mediator;
有没有办法模拟它或创建一个 actor 探针以将其与 Sys
一起使用?
我认为问题在于,当您将 HOCON 传递给基础 class 构造函数时,在使用任何 TestKit classes 时,您需要在 HOCON 中指定以下内容:
public class DistributedPubSubMediatorSpec : TestKit
{
public DistributedPubSubMediatorSpec() : base(GetConfig()) { }
public static Config GetConfig()
{
return ConfigurationFactory.ParseString("akka.actor.provider = \"Akka.Cluster.ClusterActorRefProvider, Akka.Cluster\"");
}
}
我在 Akka.NET 此处添加了一个拉取请求来测试此问题,规范通过了:https://github.com/akkadotnet/akka.net/pull/2424