Есть ли способ создать подделку из объекта System.Type в FakeItEasy? - PullRequest
0 голосов
/ 07 июля 2011

Есть ли способ создать подделку из объекта System.Type в FakeItEasy? Аналогично:

var instance = A.Fake(type);

Я пытаюсь написать поддельный контейнер для AutoFac, который автоматически возвращает подделки для всех разрешенных типов. Я посмотрел в коде FakeItEasy и всех методов, поддерживающих это, за внутренними классами, но я нашел интерфейс IFakeObjectContainer, который выглядит довольно интересно, но реализации все еще нуждаются в регистрации объектов, что я и хочу обойти.

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

Начиная с FakeItEasy 2.1.0 (но рассмотрите возможность обновления до последней версии, чтобы получить больше функций и исправлений ошибок), вы можете создать подделку из типа , например, так:

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

Если вы должны использовать более раннюю версию, вы можете использовать некоторый подход, основанный на отражении, для создания информации о методе для метода A.Fake ().(поскольку речь идет об автоматическом издевательстве, это не должно быть проблемой).

1 голос
/ 08 июля 2011

Лучше всего это сделать с помощью обработчика регистрации.Вы должны посмотреть, как AutofacContrib.Moq реализует MoqRegistrationHandler.Вы увидите, что он на самом деле использует универсальный метод MockRepository.Create для создания поддельных экземпляров.Создать аналогичный обработчик для FakeItEasy должно быть довольно просто.

...