私は現在、NSubstitute をモック フレームワークとして使用していますが、1 つの例外を除いて、かなりうまくやっています...
モックされたオブジェクト内からイベントを呼び出すインタラクションをモックしようとしていますが、残念ながらこれを行うのに本当に苦労しています。設定はこんな感じ…
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 では (ヘルパー ルーチンを作成せずに) 不可能であるという理論がありますが、ヘルパー ルーチンを使用せずに上記を達成する方法についての助けを喜んでいただければ幸いです。