![]() |
1
2
您亲身经历的是,为什么将类与实现问题紧密耦合是糟糕的设计。 该控制器应该重构为依赖于抽象而不是具体化。
从原始构造函数的外观来看
这可以在合成根处得到满足。
|
![]() |
2
1
沿着这条线的一些东西应该可以让你在构建sut之后设置字段。
理想的 但是在使用遗留代码时,有时必须做一些不干净的事情来设置测试对象的正确状态。我强烈建议您仅将这些内容放在测试中,并适当说明不要在“真实”代码中这样做。 SutProvider是一个简单的工厂,实现可以如下所示:
|
![]() |
3
0
我会用的
Dependency Injection
就是这个案子。它是一种
Inversion Control
. 我将把它作为参数传递,而不是在方法中传递proxy和\u域(proxy正在传递,但我将把\u域作为参数传递)。\u域将在中的某个位置实例化
下面是一个关于使用 Dependency Injection 正如上面用户所指出的,有一个紧密的耦合使得单元测试变得困难。 |
![]() |
4
0
你不能免费得到任何东西。如果你想测试逻辑,你必须把事情解耦。如果你不将它们解耦,你将无法正确地测试,因为你正在测试一个你自己无法测试的依赖性的东西。所以没有 虽然它可能是遗留代码,但是像resharper这样一个像样的工具(我与之完全没有关系)可以帮助您进行重构。一旦注入服务,就可以进行适当的单元测试。 |