如何在Moq中使用Unity.RegisterType?

14 moq unity-container

我有一个统一的运行代码.

现在我想使用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的'

Seb*_*ber 20

您正在尝试注册模拟对象,而不是模拟对象.

var mock = new Mock<IFoo>();
container.RegisterInstance<IFoo>(mock.Object);
Run Code Online (Sandbox Code Playgroud)