【问题标题】:How to mock a constructor with a spy?如何用间谍模拟构造函数?
【发布时间】:2020-10-09 03:25:09
【问题描述】:

我目前正在尝试测试我的 Exposed Kotlin 代码。我有一个遵循表格的表格

object Foo: Table() {
   *parameters*
}

还有一个类似的方法

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

我正在测试addNewFoo,我想验证插入是否发生,最好使用类似

verify { FooSpy.insert { ... } } 

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

【问题讨论】:

    标签: kotlin testing mockk kotlin-exposed


    【解决方案1】:

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

    mockkObject(Foo) // mock the object
    addNewFoo() // call function that we're testing
    verify { Foo.insert(any()) } // verify
    

    【讨论】:

    • 谢谢!通常这会很好用,但不幸的是,由于Foo 是一个 Exposed 表,它有一些奇怪的属性,这不起作用。 insert 需要在事务中,这使得测试变得更加困难
    【解决方案2】:

    讨论了解决方法:https://github.com/JetBrains/Exposed/issues/317

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 2021-11-20
      • 1970-01-01
      相关资源
      最近更新 更多