【问题标题】:Testing method that uses dependency injection (structuremap)使用依赖注入的测试方法(结构图)
【发布时间】:2011-10-05 18:01:57
【问题描述】:

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

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

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

【问题讨论】:

标签: c# nunit structuremap


【解决方案1】:

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

如果您配置 Structure Map 来实例化工厂,则 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,但当然您可以使用任何您想要的方式进行测试和存根。

【讨论】:

    【解决方案2】:

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

    如果您考虑一下,您希望在隔离环境中执行测试。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多