对象图以获得更好的可测试性

object graph for better testability

我是否应该重构我的测试代码系统以接受对象图而不是每个单独的依赖项?

因为我在开始我的解决方案时并没有考虑单元测试,所以我正在重构可测试性。

我正在通过构造函数注入所有依赖项:

var myApp = new MyClass(DependencyOne, DependencyTwo, ...DependencyTen)

在构造函数中,我正在将我的私有对象初始化为这些依赖项:

MyClass
{
  MyClass(IDependencyOne, IDependencyTwo, ...IDependencyTen)
  {
    dependencyOne = IDependencyOne;
    dependencyTwo = dependencyTwo ;
    ...
    dependencyTen = IDependencyTen;

  }
}

对于我的单元测试,我现在可以模拟每个依赖项:

var mockDep1 = new Mock<IDependencyOne>();
var mockDep2 = new Mock<IDependencyTwo>();
...
var sut = new MyClass(mockDep1.Object, mockDep2.Object..)

构建接受大量可测试依赖项的代码的最佳标准方法是什么?

据我所知,有几种方法可以解决测试中的依赖关系。

我建议使用automocking containers for example structure map 它非常干净,无需更新测试即可轻松添加依赖项 类.

此外,您可以避免使用 IoC 并手动解决所有依赖项或使用 testable pattern