我是单元测试的新手,想进一步了解最小起订量。
是否有一个API可以模拟将来的某种类型的实例?
我是说
假设我在嘲笑一堂课。在该类中,我使用new运算符创建对象的新实例。
我想模拟将来将在该类中创建的该对象的同一类型的所有将来实例,是否有这样的API?
我尝试查看起订量文档,但没有这样的示例。帮助任何人吗?
答案 0 :(得分:2)
不要使用new
,请使用依赖项注入和工厂。然后,您可以让您的课程创建模拟:
internal class SubjectUnderTest
{
public SubjectUnderTest( IProductFactory factory )
{
_factory = factory;
}
public void DoStuff()
{
var product = _factory.CreateProduct(); // this creates a mocked product (where you new'ed something before)
product.DoSomeThing(); // this calls into the mock product
}
private readonly IProductFactory _factory;
}
然后测试会像这样
var mockFactory = new Mock<IProductFactory>();
mockFactory.Setup( x => x.CreateProduct() ).Returns( () =>
{
var mockProduct = new Mock<IProduct>();
// TODO setup product mock here
return mockProduct.Object;
} );
var instance = new SubjectUnderTest( mockFactory.Object );
instance.DoStuff(); // <- uses the factory mock defined above to create a mocked product and calls into the mocked product