如何使用Spock(groovy)测试kotlin挂起函数

如何使用Spock(groovy)测试kotlin挂起函数,kotlin,groovy,spock,kotlin-coroutines,Kotlin,Groovy,Spock,Kotlin Coroutines,我有以下kotlin暂停功能: suspend fun registerNewTransaction(事务:String):String 我正在尝试测试它,但是我没有找到在不指定延续的情况下调用这个kotlin挂起函数的方法 如果可以从另一个基于JVM的系统调用挂起函数 语言 这是可能的,但您需要将Continuation作为最后一个参数传递,因为这是Kotlin编译挂起函数的方式 我建议使用Kotlin来测试Kotlin代码,有很多Kotlin特定的库,比如mock,支持协同路由 您可以模拟k

我有以下kotlin暂停功能:

suspend fun registerNewTransaction(事务:String):String

我正在尝试测试它,但是我没有找到在不指定
延续的情况下调用这个kotlin挂起函数的方法
如果可以从另一个基于JVM的系统调用挂起函数
语言

这是可能的,但您需要将
Continuation
作为最后一个参数传递,因为这是Kotlin编译
挂起
函数的方式


我建议使用Kotlin来测试Kotlin代码,有很多Kotlin特定的库,比如
mock
,支持协同路由

您可以模拟kotlin正在编译为方法调用的Continuation对象。这个代码对我有用:

// mocked continuation
def continuation = Mock(Continuation) {
  getContext() >> Mock(CoroutineContext)
}

// method call which should be tested
subjectUnderTest.suspendableMethod(someParameter, continuation)

了解你最终做了什么会很有趣。它可能会帮助其他Kotlin和/或Spock用户。:-)@kriegaex,一年前,我不得不在Kotlin项目中工作,该项目使用JUnit和Spek作为测试库。现在我在一个Java项目中工作,他们将Spock实现为测试库,我意识到它是多么强大和描述性,我想用Kotlin实现它,因为Kotlin现在是我最喜欢的编程语言谢谢你的回复。:-)它解释了你的动机,但没有回答我关于你最终做了什么的问题(你的决定/解决方案如何继续)。@kriegaex Hi,现在有什么线索吗?我对斯波克和科特林很感兴趣。