Компоненты модульного тестирования, использующие Akka Actor

Прежде всего, я не спрашиваю, как провести юнит-тестирование актера Акка. Я знаю методы, чтобы сделать это. Моя проблема немного другая.

Я занимаюсь разработкой программы Scala, назовем ее client, который не использует Akka Actors. Тем не менее, программа использует библиотеку, давайте назовем это server, чей интерфейс реализован с использованием Akka Actor.

Затем, с помощью шаблона Ask, client взаимодействует с server,

// This is the client program
class Client(uri: String) {
  implicit val context: ActorSystem = ActorSystem("client-actor-system")
  private val mainActor = context.actorSelection(uri)

  def connect: Future[SomeClass] = {
    implicit val timeout: Timeout = Timeout(5 seconds)
    (mainActor ? Connect()).mapTo[CreationResponse]
  }
}

Теперь я хочу записать некоторые модульные тесты для Client учебный класс. Модульное тестирование означает тестирование класса в изоляции. Каждая внешняя зависимость должна быть осмеяна.

Как я могу издеваться над ссылкой на mainActor внутри Client учебный класс? Как я могу ввести в систему актера макет актера для mainActor?

Заранее спасибо.

1 ответ

Решение

Я бы вколол mainActor выберите актера в клиенте и создайте его с помощью Akka TestKits.

Конечно, вам нужно ActorSelectionне ActorRef, Некоторые решения для этого можно найти здесь:

Предоставление ActorPath для testProbe

Или, в качестве альтернативы, вы могли бы сделать mainActor ActorRef отправив Identify сообщение для ActorSelection,

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