Внедрение зависимостей с помощью akka.net

Как создать слабую связь с akka.net? Предположим, у меня есть приложение MVC, которое использует Akka.net и которое я хочу иметь возможность тестировать контроллеры в приложении MVC без использования реальной системы акторов. Вроде как, когда вы хотите протестировать бизнес-уровень, используя реализацию moq хранилища доступа к данным. Обычно в этом случае вы определяете интервал для репозитория и можете тестировать без конкретного репозитория.

В этом случае я хочу протестировать свое приложение MVC без использования действующей системы актеров. Это может быть особенно актуально, если приложение MVC взаимодействует с удаленной актерской системой. В этом случае я хотел бы, чтобы какой-то интерфейс представлял доступ к удаленной системе актера и субъекту.

1 ответ

ActorSystem инвентарь IActorRefFactory

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

Это должно позволить вам использовать ваш фальшивый фреймворк по выбору, макетировать ActorSystem и получить этот макет возврата IActorRefs для ваших контроллеров взаимодействовать с.

Эта статья дала мне много ясности о том, как построить мост между миром ссылок на актеров и ссылок на объекты:

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

Если вкратце, вы не можете передавать ссылки на актеров мира Akka через вашу DI-инфраструктуру, но вы можете передать (конструктору родительского актора) делегаты, которые будут создавать дочерние акторы и возвращать их ссылки на актеров. Вы можете настроить эти делегаты в своем классе запуска, где у вас есть IServiceProvider, который будет использоваться для разрешения зависимостей внутри каждого делегата.

Другие вопросы по тегам