apresentaã§o
个人说话好吧!本文的想法正在帮助您为公司内的测试做出更多贡献
让我们转到以下假设,想象一下您将测试您以测试一个肿胀的课程和高度耦合,当然,此课程没有建筑商收到的属性,您是您的
>类示例:
<?php
use ...
class SomeClass
{
private AnotherClass $anotherClass;
public function __construct()
{
$this->anotherClass = new AnotherClass();
//... another calls classes
}
public function someMethod(Type $args): SomeType
{
//... any business logic
$this->anotherClass->doIt();
return $someType;
}
}
想对我来说,将有一个很高的耦合,如果您接受该类是由您的构建器中的部分发送的,则可能是与可能使用的其他类别的兼容性。
想象,anotherClass::doIt
是有风险的,如果被称为严重的后果,例如,质量更新以解决此问题,您可以在测试中覆盖此属性:
<?php
class SomeTest extends TestCase
{
public function testAnywere(): void
{
$anotherClassMock = $this->getMockBuilder(AnotherClass::class)
->disableOriginalConstructor()
->getMock();
$anotherClassMock
->method('doIt');
$someClass = new SomeClass();
$setSomeClassClosure = function () use ($anotherClassMock){
$this->anotherClass = $anotherClassMock;
};
$doSetSomeClassClosure = $setSomeClassClosure
->bindTo($someClass, SomeClass::class);
$doSetSomeClassClosure();
}
}
注意:这种测试方式的想法使您有能力解决某些遗产和风险,总体而言,理想是重写此母亲