gpt4 book ai didi

database - 调用依赖于数据访问层的方法的单元测试方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:57 25 4
gpt4 key购买 nike

我在没有任何单元测试的代码库上工作,我正试图向它添加一些单元测试。代码是 VB.NET 但不是很面向对象。我们使用 NUnit 进行单元测试。许多类都有共享/静态方法。

我正在尝试对调用其他使用数据访问层的方法的方法进行单元测试。所以我的代码看起来像下面这样:

Public Class FooBar
Private CONN_STRING As String = "<Connection String Goes Here>"

Public Shared Function DoSomething(obj As Object) As Object
'This is the method I want to unit test.
'...

Dim myLog As New Log
myLog.Message = "Foobar"
LogTable.InsertLog(CONN_STRING, myLog)

Return someObject
End Function
End Class


Public Class LogTable
Public Shared Function InsertLog(connectionString As String, log As Log) As Integer
Dim db As New DBTable(connectionString, "tblLog")
Return db.Insert(log)
End Function
End Class

所以现在我面临着弄清楚如何测试这些方法的问题。我们有很多方法,例如 DoSomething,它们都在传递连接字符串时对数据访问层类进行静态调用。

在这种情况下我该怎么做才能避免真正调用数据库?

最佳答案

你应该 mock数据库。也就是说,使用具有相同接口(interface)但不访问数据库的对象。此对象可以手写,也可以由 mock framework 生成.单元测试然后查询模拟对象以断言已按预期调用。

然后您让被测类调用模拟数据库类的实例,而不是真正的数据库对象;这项技术称为 dependency injection :您可以将模拟对象传递给被测类,或者依靠工厂返回正确的类实例,具体取决于在生产中进行单元测试或执行的代码。

关于database - 调用依赖于数据访问层的方法的单元测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377192/

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