Я только что начал тестировать API-интерфейс клиентского уровня Akka HTTP (Future-Based). Одна вещь, которую я пытался понять, - это написать unit test для этого. Есть ли способ издеваться над ответом и завершить будущее без фактического выполнения HTTP-запроса?
Я смотрел API и пакет testkit, пытаясь понять, как я могу это использовать, только чтобы найти в документах, что он на самом деле говорит:
akka-http-testkit Испытательный жгут и набор утилит для проверки реализаций служб на стороне сервера
Я думал что-то TestServer
(вроде как TestSource
для потоков Akka), и используйте DSL на стороне сервера для создания ожидаемого ответа и каким-то образом подключите его к объекту Http
.
Вот упрощенный пример того, что функция выполняет, которую я хочу проверить:
object S3Bucket {
def sampleTextFile(uri: Uri)(
implicit akkaSystem: ActorSystem,
akkaMaterializer: ActorMaterializer
): Future[String] = {
val request = Http().singleRequest(HttpRequest(uri = uri))
request.map { response => Unmarshal(response.entity).to[String] }
}
}