2

我目前尝试将一个类测试为通常在构造函数中初始化数据库连接的间谍对象。该类的简化版本如下所示。

class classToTest(){
    val connection:Connection

    init {
        connection = DatabaseConnection(url="127.0.0.1")
    }

    fun methodA():Int{
       return 3
    }
}

现在我尝试以以下方式(简化)测试我的 classToTest 的方法。

class TestClass(){
    var connection = mockk<DatabaseConnection>()
    var dbh = spyk(ClassToTest())

    @Test
    fun testMethodA(){
       assertEquals(dbh.methodA,3)
    }
}

现在的问题是我的测试无法开始,因为我不知道如何覆盖可能使用连接模拟而不是初始化连接对象的 init 函数。感谢帮助。

4

1 回答 1

5

我认为没有办法模拟间谍的 init 函数。

我建议您使用构造函数来传递连接的实例。

class ClassToTest(val connection: Connection) {
    ...
}

然后在您的测试中,模拟连接非常容易。

class TestClass(){
    private val dbh = ClassToTest(mockk())

    @Test
    fun testMethodA() {
       assertEquals(dbh.methodA, 3)
    }
}
于 2019-06-28T17:04:29.827 回答