我有一个旧的VB6项目,我正试图为其添加单元测试。我通过模拟对象来打破类中的依赖关系。一切都很顺利,直到我发现一些依赖项正在触发事件,现在我陷入了困境。
这是我尝试但不起作用的快速示例:
ITab.cls:
Option Explicit
Public Event Click(tabNumber As Integer)
Public Sub SomeOtherFunction()
End Sub
clsRealTab.cls:
Option Explicit
Implements ITab
Public Event Click(tabNumber As Integer)
Public Sub ITab_SomeOtherFunction()
'code here'
End Sub
frmMain.frm:
:frmMain.frm是一个窗体对象的名称,通常在Visual Basic中使用。Option Explicit
Private WithEvents mTab as ITab
Public Sub Main()
Set mTab = New clsRealTab 'gives "Object or class does not support the set of events" error'
End Sub
有人知道如何让这个工作或者其他处理这种情况的方法吗?
我实现了一个回调接口,我称之为ITabEventsHandler
。它看起来像这样:
Option Explicit
Public Sub Click(intPreviousTab As Integer, objSSTab As Object)
End Sub
然后我在我的表单中添加了Implements ITabEventsHandler
,并将表单作为ITabEventsHandler
参数传递给了我的clsTab初始化程序。我可以直接调用mTabEventsHandler.Click(...)
而不是触发自定义的Click(...)
事件。
感谢您的建议!