首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spek测试中使用依赖注入

如何在Spek测试中使用依赖注入
EN

Stack Overflow用户
提问于 2017-02-06 17:11:38
回答 2查看 1.5K关注 0票数 10

我正在使用Kotlin、Spring和Spek实现简单的微服务。我想测试我的存储库,但我想知道如何将repo注入spek测试用例。每个示例或教程都基于创建新的参考,如下所示:

代码语言:javascript
复制
object SampleTest : Spek({
    describe("a calculator") {
        val calculator = SampleCalculator()

        it("should return the result of adding the first number to the second number") {
            val sum = calculator.sum(2, 4)
            assertEquals(6, sum)
        }

        it("should return the result of subtracting the second number from the first number") {
            val subtract = calculator.subtract(4, 2)
            assertEquals(2, subtract)
        }
    }
})

总之,我不想做这样的事情:

代码语言:javascript
复制
val calculator = SampleCalculator()

我想要实现这一点

代码语言:javascript
复制
@Autowired
val calculator: SampleCalculator

但我不能这样做,因为我不能将服务自动连接到本地变量中。有什么解决方案吗?我对kotlin和spek是新手。

EN

回答 2

Stack Overflow用户

发布于 2017-11-25 18:53:20

lateinit上试试:

代码语言:javascript
复制
@Autowired
lateinit var calculator: SampleCalculator
票数 0
EN

Stack Overflow用户

发布于 2019-01-16 00:59:13

看看GitHub上的spek-spring-extension项目,有一种方法可以从Spring context注入bean:

用于Spek的Spring扩展

这是在Spek中编写spring集成测试的概念证明

限制

目前仅支持注入bean。

代码语言:javascript
复制
@ContextConfiguration(classes = arrayOf(MyConfiguration::class))
object MySpec: Spek({
    val context = createContext(MySpec::class)
    val foo = context.inject<Foo>()
    // val foo: Foo by context.inject()

    it("blah blah blah") {
        foo.doSomething()
    }
})

问题

Spring的TestContext框架对测试的结构进行了假设,这与Spek不兼容,这意味着我们不能使用TestContextManager (我们可以,但它将非常黑客)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42064001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档