Как внедрить зависимости в приложение ktorJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как внедрить зависимости в приложение ktor

Сообщение Anonymous »

В документации говорится о внедрении зависимостей, но на самом деле не показано, как это делается.

Документация также не завершена и содержит кучу заполнителей:
http://ktor.io/getting-started.html

Я пытался создать свою основную функцию таким образом, чтобы она принимала параметр (который является моей зависимостью), но на стороне тестирования при вызове это не удалось withTestApplication.
Я просмотрел код приложения и увидел, что приложение принимает объект конфигурации, но понятия не имею, как я могу изменить этот объект конфигурации, чтобы внедрить в него некоторые зависимости.

Код: Выделить всё

package org.jetbrains.ktor.application

/**
* Represents configured and running web application, capable of handling requests
*/
class Application(val environment: ApplicationEnvironment) : ApplicationCallPipeline() {
/**
* Called by host when [Application] is terminated
*/
fun dispose() {
uninstallAllFeatures()
}
}

/**
* Convenience property to access log from application
*/
val Application.log get() = environment.log
В тестовом коде с использованием withTestApplication у меня есть что-то похожее на приведенное ниже:

Код: Выделить всё

@Test
internal fun myTest() = withTestApplication (Application::myMain)
Вышеупомянутый метод withTestApplication завершится неудачей, если я вызову myMain с параметрами (параметрами, которые мне нужно имитировать и внедрить).

Обновление:

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

Подробнее здесь: https://stackoverflow.com/questions/461 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»