Метод тестирования, использующий внедрение зависимостей (Structuremap) - PullRequest
0 голосов
/ 05 октября 2011

У меня есть фабричный метод, который создает новые экземпляры определенного интерфейса.

Я использую StructureMap для создания новых экземпляров интерфейса.

Как я могу протестировать этот метод?

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Если вы заставите фабрику принять IContainer в качестве зависимости ctor, вы можете заглушить контейнер.

IContainer должен автоматически распознаваться структурной картой, если вы конфигурируете Structure Map для создания экземпляра фабрики.

Редактировать:

Я думал о чем-то вроде этого, вынимая карту структуры из уравнения при тестировании:

[Test]
public void ResolvesFooFromContainer()
{
   var expectedFoo = new Foo();
   var container = MockRepository.GenerateStub<IContainer>();
   container.Stub(c => c.GetInstance<Foo>()).Return(foo);
   var factory = new FooFactory(container);

   var createdFoo = factory.CreateFoo();

   Assert.That(createdFoo, Is.EqualTo(expectedFoo));
}

В примере используются Rhino Mocks иNUnit, но, конечно, вы можете проверить и заглушить, как вы хотите.

0 голосов
/ 06 октября 2011

Я наконец смог достичь того, что хотел.

Если вы подумаете об этом, вы хотите выполнить свой тест в изолированной среде.

Так что мне просто нужно было инициализировать структурус фиктивным объектом, и я смог проверить свой фабричный метод.

...