我該如何測試下面的代碼?如何測試執行內部操作的引用類?
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()?