【发布时间】:2018-02-21 10:26:05
【问题描述】:
文档讨论了依赖注入,但并未真正说明它是如何完成的。
文档也没有完成,并且有一堆占位符: http://ktor.io/getting-started.html
我尝试以接受参数(这是我的依赖项)的方式创建我的主函数,但是当我调用 withTestApplication 时,它在测试端失败了。
我查看了应用程序代码,发现 Application 接受了一个配置对象,但我不知道如何更改该配置对象以在其中注入一些依赖项。
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)
如果我使用参数(我需要模拟和注入的参数)调用myMain,上述withTestApplication 将失败。
更新:
问题是,在我的请求处理中,我使用了一个连接到外部其他 Web 服务并执行一些请求的依赖类,我需要一种能够注入它的方法,因此在我的测试中我可以存根/模拟它并根据我的测试用例改变它的行为。
【问题讨论】:
标签: java unit-testing dependency-injection kotlin ktor