依赖注入akka.net

问题描述 投票:3回答:2

如何构建松散耦合到akka.net?假设我有一个使用Akka.net的MVC应用程序,我希望能够在不使用真实的actor系统的情况下测试MVC应用程序中的控制器。有点像您想要使用数据访问存储库的moq实现来测试业务层时。通常在这种情况下,您可以为存储库定义一个intervace,并且可以在没有具体存储库的情况下进行测试。

在这种情况下,我想测试我的MVC应用程序而不使用实际的actor系统。如果MVC应用程序与远程actor系统交互,这可能尤其重要。在这种情况下,我想要某种接口来表示对远程actor系统和actor的访问。

dependencies code-injection akka.net coupling loose
2个回答
1
投票

ActorSystem实施IActorRefFactory

public interface IActorRefFactory
{
    IActorRef ActorOf(Props props, string name = null);
    ActorSelection ActorSelection(ActorPath actorPath);
    ActorSelection ActorSelection(string actorPath);
}

这应该允许你使用你选择的模拟框架,模拟一个ActorSystem并让你的控制器返回模拟IActorRefs进行交互。


0
投票

这篇文章让我非常清楚如何在actor引用和对象引用的世界之间建立一座桥梁:

https://havret.io/akka-net-asp-net-core

如果简单,你不能通过你的DI框架传递Akka-world actor引用,但你可以做的是传递(到父actor的构造函数)委托,它将创建子actor并返回它们的actor引用。您可以在启动类中配置这些委托,其中IServiceProvider将用于解析每个委托中的依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.