如何构建到akka.net的松散耦合?假设我有一个使用Akka.net的MVC应用程序,并且我希望能够在MVC应用程序中测试控制器,而无需使用实际的参与者系统。就像您想要使用数据访问存储库的moq实现测试业务层时一样。通常,在这种情况下,您可以为存储库定义一个接口,并且可以在没有具体存储库的情况下进行测试。
在这种情况下,我想测试我的MVC应用程序,而不使用实际的参与者系统。如果MVC应用程序与远程参与者系统交互,这可能特别相关。
发布于 2016-04-21 21:14:29
ActorSystem实现了IActorRefFactory
public interface IActorRefFactory
{
IActorRef ActorOf(Props props, string name = null);
ActorSelection ActorSelection(ActorPath actorPath);
ActorSelection ActorSelection(string actorPath);
}这应该允许您使用您选择的模拟框架,模拟一个ActorSystem,并返回模拟IActorRefs供您的控制器与之交互。
发布于 2019-04-25 20:08:58
这篇文章让我明白了如何在参与者引用和对象引用的世界之间架起一座桥梁:
https://havret.io/akka-net-asp-net-core。
简单地说,您不能通过DI框架传递Akka-world参与者引用,但您可以做的是传递(给父参与者的构造函数)将创建子参与者并返回其参与者引用的委托。您可以在启动类中配置这些委托,其中的IServiceProvider将用于解析每个委托中的依赖项。
https://stackoverflow.com/questions/36770042
复制相似问题