I agree, and I think the slightly confusing/crowded API is probably the main reason that some people are choosing Moq over Rhino. I get that it's all there for backwards compatibility, but maybe it would be worth considering a new Rhino Mocks version that doesn't support any of the old syntaxes and is much more strongly opinionated, RhinoMocksLight, "now with reduced syntax choices" :)
On Wed, Apr 1, 2009 at 2:59 PM, Shane Courtrille <shanecourtri...@gmail.com>wrote: > First off let's look at all the ways we can create something.. > > repository.CreateMock() + 2 variations. Marked as obsolete. > repository.StrictMock() + 2 variations. > repository.Stub() > MockRepository.GenerateStub<>() > repository.DynamicMock() + 2 variations > MockRepository.GenerateMock<>() > repository.PartialMock() + 1 variation > > Which isn't to say that they don't all have a purpose.. but we're talking > about 12 methods that all create a stub/mock. > > And then how can we use our mock? > > Record/Replay Syntax with using blocks > Record/Replay with method calls > AAA syntax using Expect() > AAA syntax using AssertThat <- aka Test Spy > > I love Rhino Mocks as much as the next guy but you've got to admit that the > API has gotten a bit insane. I've been here for the evolution and I've > written code that uses CreateMock in the past so I know why things can't > just get killed off. But at this point the only thing keeping me from > switching to Moq and it's clean interface for my next greenfield project is > the fact it has that whole ugly .Object thing going on. > > As a presenter I find it quite difficult to actually talk about Rhino Mocks > now because there are so many ways to do things. I'm not really sure what > can be done though. I do like the fact that the latest StructureMap went > .Net 3.5 only and cleaned up their interface but I'm also not so happy that > .Net 2.0 support within StructureMap is gone but that's a completely > different story since for the most part there are very few places you need > to update your StructureMap usage (if you've wrapped it properly). Not so > much with Rhino Mocks which is sprinkled through your test code. > > > On Wed, Apr 1, 2009 at 7:45 AM, Tim Barcz <timba...@gmail.com> wrote: > >> what areas do you see where clean up could occur? Phrased another way, >> what is crowded? >> >> >> On Wed, Apr 1, 2009 at 8:33 AM, Shane Courtrille < >> shanecourtri...@gmail.com> wrote: >> >>> Why would we want ANOTHER way to do something that is already possible? >>> The Rhino Mocks API is already getting kind of crowded... >>> >>> On Wed, Apr 1, 2009 at 7:23 AM, Koen Verheyen >>> <verheyen.k...@gmail.com>wrote: >>> >>>> >>>> Hi Ayende, >>>> >>>> Dunno if I’m asking for a bit of support here or a feature request. >>>> >>>> What I wanna do a lot with Rhino Mocks is the following: I set an >>>> expectation on a dependency (dynamic mock) on a method that takes >>>> parameters, but I have a lot of cases where I don’t know one of the >>>> parameters (usually a reference that is created in the scope of the >>>> public method I’m testing). >>>> >>>> I found two ways of doing this, with “Constraints” and “WhenCalled”: >>>> swimlaneRepository.Expect(r => r.QuerySwimlanesToRemove(Guid.Empty, >>>> null)).Constraints(Is.Equal(processDefinitionId), Is.Anything()); >>>> >>>> swimlaneRepository.Expect(r => r.QuerySwimlanesToRemove(Guid.Empty, >>>> null)).IgnoreArguments().WhenCalled( >>>> mo => >>>> { >>>> Assert.AreEqual(processDefinitionId, mo.Arguments[0]); >>>> }); >>>> >>>> … but would like to write it more or less, like this: >>>> >>>> swimlaneRepository.Expect(r => r.QuerySwimlanesToRemove >>>> (processDefinitionId, null)).IgnoreArguments(1); >>>> >>>> ... where “1” points to the second parameter and ignoring only that >>>> one, but still expecting the value of the first parameter (index 0). >>>> The argument of “IgnoreArguments” would thus be “params int[]” >>>> >>>> Is there already something like this in Rhino mocks? If not, I think >>>> it’d be a nice feature request (if technically possible)... >>>> >>>> Thanks >>>> >>>> Koen >>>> >>>> >>>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To post to this group, send email to RhinoMocks@googlegroups.com To unsubscribe from this group, send email to rhinomocks+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/RhinoMocks?hl=en -~----------~----~----~----~------~----~------~--~---