I’m somewhat new to Unity and dependency injection. I’m trying to write a unit test that goes something like this:
[Test]
public void Test()
{
UnityContainer container = new UnityContainer();
DynamicMock myMock = new DynamicMock(typeof(IMyInterface));
container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here
// Continue unit test...
}
When this test executes, the container throws an ArgumentNullException inside the RegisterInstance method with the message Value cannot be null. Parameter name: assignmentValueType.
The top line of the stack trace is at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName).
Why can’t I register a MockInstance with the UnityContainer, and how do I work around this?
I’m not seeing this. I’m using NUnit 2.5.5.10112 and Unity 2.0 (which ships with EntLib, the separate release isn’t available just yet).
Update: I just checked with 1.2 and I see your behavior. So this is an issue with 1.2.
Would it be possible for you to update to Unity 2.0? If not I’ll try and dig deeper and find out what’s really going on. This may be a limitation of 1.2 though.