我现在有一个方法在我的类,调用其他方法,一些从其他相同的对象和其他对象。
class MyClass
{
public function myMethod()
{
$var1 = $this->otherMethod1();
$var2 = $this->otherMethod2();
$var3 = $this->otherMethod3();
$otherObject = new OtherClass();
$var4 = $otherObject->someMethod();
# some processing goes on with these 4 variables
# then the method returns something else
return $var5;
}
}
我整个TDD的新游戏,但是一些我认为< em > < / em >我理解关键前提有更多的可测试的代码组成,松散耦合,一些依赖项注入/反转控制的策略。
我该如何去重构一个方法更可测试的在这个特殊的情况?
我美元通过<代码> < /代码>对象引用作为参数的方法,这样我可以很容易地模拟/存根合作方法吗?这是推荐的还是玩的太过头了吗?
class MyClass
{
public function myMethod($self, $other)
{
# $self == $this
$var1 = $self->otherMethod1();
$var2 = $self->otherMethod2();
$var3 = $self->otherMethod3();
$var4 = $other->someMethod();
# ...
return $var5;
}
}
同时,很明显,我依赖性与TDD是非常大的问题,必须考虑如何注入一个存根/模拟的方法测试。大多数TDDers使用DI /国际奥委会作为主要战略公众依赖?此时变得夸张吗?你能给一些指针有效地这样做吗?