На мой вопрос ответили здесь .
Привет, Натан
Здесь есть несколько вариантов.
Используя пакет, вы можете вызвать метод AddExportedObject, чтобы добавить фиктивный экземпляр в контейнер. AddExportedObject позволяет вам указать контракт для добавляемого вами экземпляра. то есть batch.AddExportedObject (mockLogger, typeof (ILogger));
Вы также можете создать собственный поставщик экспорта, который позволит вам добавлять фиктивные экземпляры. Если вы перейдете по этой ссылке, вот несколько утилит, которые я использую. http://pastie.org/467842. Внутри вы найдете FakeExportProvider, а также FakeExportDefinitions. FakeExportDefinitions принимает функцию для экземпляра. Это означает, что вы можете передать ему экземпляр или даже напрямую создать макет.
Вот пример кода, иллюстрирующий использование.
protected override void Context()
{
MockCache = MockRepository.GenerateStub<ICache>();
var metadata = new Dictionary<string, object> ()
var cacheDefinition = new FakeInstanceExportDefinition(typeof(ICache), MockCache, metadata);
FakeProvider = new FakeExportProvider(f => ((FakeInstanceExportDefinition)f).Instance);
FakeProvider.AddExportDefinitions(cacheDefinition);
CacheExport = FakeProvider.GetExport<ICache>();
}
Теперь выше я обращаюсь напрямую к поставщику экспорта. Тем не менее, наш контейнер позволяет перейти к поставщику экспорта в его конструкции. Так что вы можете сделать это ...
var container = new CompositionContainer (null, FakeProvider).
НТН
Гленн