问题描述
我有一个带有仅设置私有属性的构造函数的类。此类在许多自动化测试中使用,我需要添加另一个私有属性。有什么好的方法可以避免在测试方法中更新类的实例? 我应该重载构造函数还是使用工厂模式?
我认为当新的私有属性在测试用例(例如添加ILogger)中不重要时,我可以重载构造函数,但是如果测试用例中需要私有属性,则最好使用工厂方法。 你有什么建议?
解决方法
您真的想坚持通过构造函数为所有依赖项(例如ILogger或诸如此类)进行依赖项注入。这样,您就可以正确利用ASP.NET Core依赖项注入。
对于您不想在单元测试场景中使用的依赖项,您可能想使用MOQ,Fake It Easy或类似框架来模拟它。
这样,您可以肯定地知道,一旦创建了类,ILogger等将存在并且有时可能不为null并设置其他时间。
,这就是我的理解;所以我分享是为了帮助别人。
工厂模式是关于创建s.th的,因此命名为Factory。如果构造函数变得复杂,或者内部方法涉及创建类(即对象)的实例,则表明使用了工厂方法。
例如您想本地化实例化复杂对象的逻辑
如果您有FooFactory类,则该类将创建Foo的实例,并封装实现的详细信息。
因此仅配置依赖项注入的构造函数不应使用Factory模式。