我目前正在使用 NSubstitute 作为我的模拟框架,并且我做得相当不错,除了一个例外是......
我试图模拟从我的模拟对象内部调用事件的交互,不幸的是我真的很难做到这一点。设置是这样的......
Public Interface IMockObject
Event MyMockedEvent( someId as Integer )
Sub MyRoutineThatInvokesMyMockedEvent( someId as Integer)
End Interface
...所以在我的单元测试中,我需要模拟“MyRoutineThatInvokesMyMockedEvent”以接收 ID,然后引发“MyMockedEvent”。到目前为止,我已经想出了...
Dim mockedObject = Substitute.For(Of IMockObject)()
mockedObject.When(
Sub(x) x.MyRoutineThatInvokesMyMockedEvent( 999 )).Do(
Sub(y) 'RaiseTheEventHere )
...但我坚持实际上提出了以下无效的事件...
mockedObject.When(
Sub(x) x.MyRoutineThatInvokesMyMockedEvent( 999 )).Do(
Sub(y) RaiseEvent MyMockedEvent(999) )
...我确实有一个理论,这在 VB.NET 中可能是不可能的(不创建辅助例程),但很乐意感谢任何有关如何在没有辅助例程的情况下实现上述目标的帮助。