我有一个工厂方法,创建一个特定接口的新实例。
我正在使用StructureMap创建接口的新实例。
我如何对这个方法进行单元测试?
如果你让工厂接受一个IContainer作为一个依赖,你就可以把这个容器存根。
如果你配置了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 mock和NUnit,当然你可以用任何你想要的方式来测试和存根。
我终于实现了我想要的。
如果你考虑一下,你想在一个孤立的环境中执行你的测试。
所以我只需要用模拟对象初始化结构,我就可以测试我的工厂方法了。