14

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

现在我想使用 Moq 对 ASP-MVC 进行单元测试。在 global.asax 的代码中,我有以下内容:

IUnityContainer container = new UnityContainer();
container.RegisterType<IFoo, Foo>(new InjectionConstructor("xxx"));

现在我用 Moq 编写了测试代码:

IUnityContainer container = new UnityContainer();
var mockFoo = new Mock<IFoo>();

container.RegisterType<IFoo, mockFoo) >(new InjectionConstructor("xxx"));

但这不起作用。

错误:类型“Moq.Mock”不能用作泛型类型或方法“Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType”中的类型参数“TTo”...没有从“Moq.Mock”到'IFoo'

4

1 回答 1

20

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

var mock = new Mock<IFoo>();
container.RegisterInstance<IFoo>(mock.Object);
于 2012-09-27T06:27:42.837 回答