gpt4 book ai didi

unit-testing - MockK 的 spyk 如何覆盖构造函数?

转载 作者:行者123 更新时间:2023-12-02 12:38:21 28 4
gpt4 key购买 nike

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

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 函数。感谢您的帮助。

最佳答案

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

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

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

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

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

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

关于unit-testing - MockK 的 spyk 如何覆盖构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809910/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com