Компоненты модульного тестирования, использующие 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
,