Kotlin 如何用间谍模拟构造函数?

Kotlin 如何用间谍模拟构造函数?,kotlin,testing,mockk,kotlin-exposed,Kotlin,Testing,Mockk,Kotlin Exposed,我目前正在尝试测试我公开的Kotlin代码。我有一张表格,表格如下 object Foo: Table() { *parameters* } 还有一种类似于 fun addNewFoo(){ Foo.insert { ... } } verify { FooSpy.insert { ... } } 我正在测试addNewFoo,我想验证插入是否发生,最好使用 fun addNewFoo(){ Foo.insert { ... } } verify { FooSpy

我目前正在尝试测试我公开的Kotlin代码。我有一张表格,表格如下

object Foo: Table() {
   *parameters*
}
还有一种类似于

fun addNewFoo(){
    Foo.insert { ... }
}
verify { FooSpy.insert { ... } } 
我正在测试
addNewFoo
,我想验证插入是否发生,最好使用

fun addNewFoo(){
    Foo.insert { ... }
}
verify { FooSpy.insert { ... } } 

如何将Foo表模拟为间谍,以便验证调用是否发生,或者应该采取什么其他方法来验证调用的此方法?

您可以首先使用
mockkObject()
模拟singleton
Foo
类,然后进行验证。代码如下:

mockkObject(Foo)//模拟对象
addNewFoo()//调用我们正在测试的函数
验证{Foo.insert(any())}//verify

讨论了解决方法:


似乎没有真正的测试方法,但在测试数据库中制作小型测试表是最接近您的方法。

谢谢!通常这会很好,但不幸的是,因为
Foo
是一个公开的表,所以它有一些奇怪的属性,而这不起作用。
insert
需要位于事务内部,这使得测试更加困难