首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin Spek测试中组织多个协同和期望块?

如何在Kotlin Spek测试中组织多个协同和期望块?
EN

Stack Overflow用户
提问于 2017-10-25 19:33:34
回答 1查看 386关注 0票数 2

我编写了一个失败的Spek测试,因为我对涉及多个协同和it函数的执行顺序做了错误的假设:

代码语言:javascript
复制
given("a test") {
    runBlocking { print("a") }

    it("block 1") {
        runBlocking { print("b") }
    }

    runBlocking { print("c") }

    it("block 2") {
        runBlocking { print("d") }
    }
}

我原以为abcd会被打印出来,但是acbd实际上是打印出来的。

我应该如何编写这个测试,这样它才能以预期的顺序直观地读取和执行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 13:26:07

Spek基本上是使用lambdas编写的,所以为了让Spek知道测试树,它必须执行它--这就是发现阶段。在该阶段中,将执行组作用域(给定、描述、上下文),在您的示例中调用runBlocking { print("a") }和runBlocking { print("c") }。一旦知道了测试树,Spek现在可以继续执行阶段了。在此阶段,Spek将执行传递给测试(it)和action (on)作用域的lambda。

作为对问题的修正,您应该使用操作范围而不是给定。

代码语言:javascript
复制
on("a test") {
    runBlocking { print("a") }

    it("block 1") {
        runBlocking { print("b") }
    }

    runBlocking { print("c") }

    it("block 2") {
        runBlocking { print("d") }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46940718

复制
相关文章

相似问题

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