我有一个工厂方法可以创建某个接口的新实例。
我正在使用StructureMap创建接口的新实例。
我如何对这种方法进行单元测试?
答案 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)
我终于能够实现我想要的目标。
如果你想一想,你想在一个孤立的环境中进行测试。
所以我只需要用模拟对象初始化结构,然后我就可以测试我的工厂方法了。