4

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

在这种情况下,我想在不使用实际 Actor 系统的情况下测试我的 MVC 应用程序。如果 MVC 应用程序与远程参与者系统交互,这可能特别相关。在这种情况下,我想要某种接口来表示对远程参与者系统和参与者的访问。

4

2 回答 2

3

ActorSystem工具IActorRefFactory

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

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

于 2016-04-21T13:14:28.700 回答
0

这篇文章让我清楚地知道如何在演员引用和对象引用的世界之间架起一座桥梁:

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

简而言之,您不能通过 DI 框架传递 Akka 世界的参与者引用,但您可以做的是传递(给父参与者的构造函数)委托,这些委托将创建子参与者并返回他们的参与者引用。您可以在具有 IServiceProvider 的启动类中配置这些委托,该类将用于解决每个委托中的依赖关系。

于 2019-04-25T12:08:58.153 回答