我有一个统一的运行代码.
现在我想使用Moq对ASP-MVC进行单元测试.在global.asax的代码中,我有以下内容:
IUnityContainer container = new UnityContainer();
container.RegisterType<IFoo, Foo>(new InjectionConstructor("xxx"));
Run Code Online (Sandbox Code Playgroud)
现在我用Moq编写了测试代码:
IUnityContainer container = new UnityContainer();
var mockFoo = new Mock<IFoo>();
Run Code Online (Sandbox Code Playgroud)
container.RegisterType<IFoo, mockFoo) >(new InjectionConstructor("xxx"));
但这不起作用.
错误:类型'Moq.Mock'不能在泛型类型或方法'Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType中用作类型参数'TTo'...没有从'Moq.Mock'到内容的隐式引用转换'IFoo的'
为什么将容器放在构造函数中是如此糟糕?例如,您希望在另一个类(C)的构造函数中解析类B,因为您需要将类(B)与已解析的依赖项一起使用(您可以按照您希望的方式开始使用类C,就像它是B但是解决了依赖关系).