Daniel Hoelbling-Inzko talks about programming
This may be the very first time I blog about a bug in the CLR, but it’s annoying nonetheless.
Apparently a bug in the CLR’s System.Reflection.Emit prevents Rhino.Mocks from working when generic constraints are applied to a method.
void Add<T, TType>() where T : class where TType : T;
As long as the TType : T constraints is present, all tests will fail with a System.BadImageFormatException.
Now, the bug is known and it looks like it can’t really be helped on the framework side. But, I didn’t want to drop this constraint in my production code just to make the class testable.
So, I went back to the dark ages and actually wrote a Mock class by hand that counted calls to methods, returned preset values for methods.
Overall, the Mock is a mess. There are like 5-6 fields counting all sorts of different stuff just for a simple interface with two methods.
Thank god there are tools like Rhino.Mock that keep me from writing code like that (I really can’t praise Ayende enough for Rhino.Mocks).