Question

I've been looking at several Mocking frameworks for ASP.NET and came across Microsoft Moles. This seems to be a part of Microsoft Research team and was wondering If anyone here has selected Moles over other matured Mocking frameworks such as Moq.

Was it helpful?

Solution

I actually use Moq and Moles in the same test project. Both have strengths and I use each where appropriate. Generally, I use Moq for the standard sort of AAA testing with verification, and Moles is the 'big gun' for the otherwise unmockable things, like extension method calls etc.

I like this arrangement, because each test can be as simple and sensible as possible, even though the mocking setup might vary a lot from test to test.

OTHER TIPS

Moles was designed to work efficiently with the white box analysis of Pex. All other mock framework usually incur a lot of overhead.

Moles provides a simple value proposition: replacing any .NET method with a delegate. By design, Moles does not provide any API to express 'verification' as other frameworks do. It is really up to you to decide whether this decision suits your or not.

If you need to deal with (legacy) code that depends on hard-coded static methods or sealed types with internal constructors, Moles can help you deal with these cases.

If you have interfaces and nicely componentized code, Moles also generates slim stubs, i.e. interface implementation, that you can use with the profiler.

Moles is more often compared/contrasted to TypeMock in that it offers a set of facilities outside of Moq and/or RhinoMocks' sweet spot.

The main question you have to ask yourself in choosing is whether you want to keep your testing relatively low-tech or get involved in a higher level of technical trickery. This will largely be dictated by what you're doing - you've tagged ASP.NET and not MVC which suggests that it may indeed be relevant for you.

Have a look at this Dimecasts.net video for a nice overview.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top