我编写了一个失败的Spek测试,因为我对涉及多个协同和it函数的执行顺序做了错误的假设:
given("a test") {
runBlocking { print("a") }
it("block 1") {
runBlocking { print("b") }
}
runBlocking { print("c") }
it("block 2") {
runBlocking { print("d") }
}
}我原以为abcd会被打印出来,但是acbd实际上是打印出来的。
我应该如何编写这个测试,这样它才能以预期的顺序直观地读取和执行?
发布于 2017-10-26 13:26:07
Spek基本上是使用lambdas编写的,所以为了让Spek知道测试树,它必须执行它--这就是发现阶段。在该阶段中,将执行组作用域(给定、描述、上下文),在您的示例中调用runBlocking { print("a") }和runBlocking { print("c") }。一旦知道了测试树,Spek现在可以继续执行阶段了。在此阶段,Spek将执行传递给测试(it)和action (on)作用域的lambda。
作为对问题的修正,您应该使用操作范围而不是给定。
on("a test") {
runBlocking { print("a") }
it("block 1") {
runBlocking { print("b") }
}
runBlocking { print("c") }
it("block 2") {
runBlocking { print("d") }
}
}https://stackoverflow.com/questions/46940718
复制相似问题