如何构建松散耦合到akka.net?假设我有一个使用Akka.net的MVC应用程序,我希望能够在不使用真实的actor系统的情况下测试MVC应用程序中的控制器。有点像您想要使用数据访问存储库的moq实现来测试业务层时。通常在这种情况下,您可以为存储库定义一个intervace,并且可以在没有具体存储库的情况下进行测试。
在这种情况下,我想在不使用实际actor系统的情况下测试我的MVC应用程序。如果MVC应用程序与远程actor系统交互,这可能尤其重要。在这种情况下,我想要某种接口来表示对远程actor系统和actor的访问。
答案 0 :(得分:1)
ActorSystem
实施IActorRefFactory
public interface IActorRefFactory
{
IActorRef ActorOf(Props props, string name = null);
ActorSelection ActorSelection(ActorPath actorPath);
ActorSelection ActorSelection(string actorPath);
}
这应该允许你使用你选择的模拟框架,模拟一个ActorSystem并让你的控制器返回模拟IActorRefs
来进行交互。
答案 1 :(得分:0)
本文使我清楚地知道如何在角色引用和对象引用之间建立桥梁:
https://havret.io/akka-net-asp-net-core。
简单地说,您不能通过DI框架传递Akka-world角色引用,但是您可以做的是传递(传递给父角色的构造函数)代表,以创建子角色并返回其角色引用。您可以在您的启动类中配置这些委托,在其中您将拥有IServiceProvider来解决每个委托中的依赖项。