是否有API允许我模拟某种类型的未来实例?我的意思是, 假设我在嘲笑一个 class . 在该类中,我使用new运算符来创建对象的新实例 . 我想模拟将来在该类中创建的相同类型的对象的所有未来实例,是否有这样的API?
我试着查看MOQ文档,但没有这样的例子 . 帮助任何人?
1 回答
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
1 回答
不要使用
new
,使用依赖注入和工厂 . 然后你可以让你的类创建模拟:然后测试看起来像这样