我该如何测试下面的代码?如何测试执行内部操作的引用类?
Public Sub SetSerialIdForDevice()
Try
Dim component As Object = container.getComponentRef("componentInterface")
If component IsNot Nothing Then
component.SetupDeviceSerialID(container.serialNumbers)
Else
serialfound = False
End If
Catch ex As Exception
'' error handling
End Try
End Sub
在运行时将项目引用(或称为组件)在运行时加载到一个单独的容器中。我们通过使用container.getComponentRef("< name of component we're looking for >")
来调用与设备连接的组件。然后我们在这个组件上调用一个方法来设置存储在容器对象属性中的序列标识。
在SetupDeviceSerialID()方法中,我们调用“容器”原生的属性(例如,如果它是内部调试模式)以及其他一些对象。在对象中有对象的情况下测试这种情况的最佳方法是什么?我们会嘲笑所有的调用,属性和对象以隔离SetupDeviceSerialID()的测试吗?
或者我们模拟返回的'componentInterface'
并嘲笑SetupDeviceSerialID()
的调用,然后测试在SetupDeviceSerialID()
内更改的属性?
编辑
我一直在思考这个测试不正确的(明显),并通过我认识到,我试图通过死记硬背的方法测试的答案代码执行更深,进入测试用于SetSerialIdForDevice()方法。
所以,作为一个结果, 如果发现serialID,我们会设置serialfound = true
SetupDeviceSerialID()内。
是我们在这里测试的东西(因为我们将测试serialfound=false
),或者在测试SetupdDeviceSerialID()?我们是否会创建一个测试来查看“componentInterface”组件上是否实际存在SetupDeviceSerialID()?