Подтвердить что ты не робот

Как использовать Unity.RegisterType с Moq?

У меня есть код запуска с единицей.

Теперь я хочу использовать 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" не может использоваться как параметр типа "TTo" в общем типе или методе "Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType... Нет никакого неявного преобразования ссылок из "Moq.Mock" в "IFoo"

4b9b3361

Ответ 1

Вы пытаетесь зарегистрировать макет-объект, а не насмешливый объект.

var mock = new Mock<IFoo>();
container.RegisterInstance<IFoo>(mock.Object);