| Home | Biography | Speaking | Articles | Books | Music |
As before, this post is primarily for my own benefit and hopefully others can use it too.
Let’s say I have the following interface:
Public Interface IDataManager
Sub Load(ByVal id as Integer, ByVal useReader as Action(Of IDataReader))
End Interface
I want to stub it using Rhino Mocks. Here’s how I did it:
Dim manager = MockRepository.GenerateStub(Of IDataManager)()
manager.Stub(Of IDataManager)(AddressOf Me.LoadStub).WhenCalled(AddressOf Me.LoadCalled)
Private Sub LoadCalled(ByVal invocation as MethodInvocation)
' Do magic with the two arguments passed.
End Sub
Private Function LoadStub(ByVal e as IDataManager) As IDataManager
e.Load(Arg(Of Integer).Is.Anything, Arg(Of Action(Of IDataReader)).Is.Anything)
Return Nothing
End Function
Frankly, doing it in C# feels much cleaner to me:
var manager = MockRepository.GenerateStub<IPredefinedTextManager>();
manager.Stub(e => e.Load(Arg<int>.Is.Anything,
Arg<Action<IDataReader>>.Is.Anything)).WhenCalled(
(invocation) =>
{
' Do magic with the arguments.
});
YMMV :)
Published: 09.29.2009 11:41:44 AM CST