使用依赖注入的测试方法(结构图)

时间:2011-10-05 18:01:58

标签: c# nunit structuremap

我有一个工厂方法可以创建某个接口的新实例。

我正在使用StructureMap创建接口的新实例。

我如何对这种方法进行单元测试?

2 个答案:

答案 0 :(得分:1)

如果您让工厂将IContainer作为ctor依赖项,您可以将容器存根。

如果您将Structure Map配置为实例化工厂,则应通过Structure Map自动解析IContainer。

修改

我正在考虑这样的事情,在测试时将结构图排除在等式之外:

[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,但当然您可以以任何方式测试和存根。

答案 1 :(得分:0)

我终于能够实现我想要的目标。

如果你想一想,你想在一个孤立的环境中进行测试。

所以我只需要用模拟对象初始化结构,然后我就可以测试我的工厂方法了。