Hi Tim,
After looking at the source code of Rhino.Mocks. I started using
PartialMock for AAA in my tests. It is working surprisingly well. See
the code below.
Cheers,
Kenneth
class Mockery : MockRepository
{
public static T GeneratePartialMock<T>(params object[]
argumentsForConstructor)
where T : class
{
var mockery = new MockRepository();
var mock = mockery.PartialMock<T>(argumentsForConstructor);
mockery.Replay(mock);
return mock;
}
}
[Test] public void
NewTaskForCallGetsNewTaskFromAbstractExecutorService()
{
Call<T> call = delegate
{
return TestData<T>.One;
};
var futureTask = Mockery.GeneratePartialMock<FutureTask<T>>(call);
ExpectExecuteCallAndRunTheRunnableInCurrentThread();
_executor.Expect(e => e.NewTaskFor(call)).Return(futureTask);
var f1 = _sut.Submit(call);
Assert.That(f1, Is.SameAs(futureTask));
var f2 = _sut.Poll();
Assert.That(f2, Is.SameAs(futureTask), "submit and take
must return same objects");
futureTask.AssertWasCalled(ft => ft.Done());
_executor.VerifyAllExpectations();
}
private void ExpectExecuteCallAndRunTheRunnableInCurrentThread()
{
_executor.Expect(e => e.Execute(Arg<IRunnable>.Is.NotNull))
.WhenCalled(r => ((IRunnable)r.Arguments[0]).Run());
}
On Sat, Jun 27, 2009 at 11:40 AM, Kenneth Xu<[email protected]> wrote:
> +1. For all the developers with whom I have worked, including myself,
> it took us a while to get used to record/reply. Then end up with
> overly interactive test cases that fails whenever the implementation
> changes. Only a few good ones eventually start to think when to stub
> and when to mock and what to expect, but it took even longer than the
> time taken understanding record/replay.
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Rhino.Mocks" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/RhinoMocks?hl=en
-~----------~----~----~----~------~----~------~--~---