Mocking a type with an internal constructor using Moq
You cannot mock a type that does not have a public constructor because Moq will not be able to instantiate an object of that type. Depending on what you are trying to test, you have a few options:
- If there's a factory object or some other way of obtaining instances of FullEnumerationContext perhaps you can use that (sorry, I'm not familiar with the sync framework)
- You could use private reflection to instantiate a FullEnumerationContext, but then you would not be able to mock methods on it.
- You could introduce an interface and/or wrapper object that's mockable that the code under test could invoke. The runtime implementation would delegate to the real FullEnumerationContext, while your test-time implementation would perform whatever action you need.
I am not really an expert on Moq, but I think you need to specify the arguments for the constructor. In Rhino Mocks you would specify them like this:
var fullEnumerationContextMock = new Mock<FullEnumerationContext>(arg1, arg2);
It is probably similar in Moq.