PHPUnit 测试位于特征中的静态函数
PHPUnit test a static function located in a trait
在一段遗留代码中,我的任务是测试具有这样特征的静态函数:
namespace App\Model\SomeLogic;
trait WhyDecidedToUseTrait
{
public static function aMethodThatDoesSomeFancyStuff()
{
//Method Logic
}
}
并从documentation这一段使用getMockForTrait
方法。但在我的例子中,制作一个虚拟对象以测试一个静态函数,其中对象瞬间无用开始没有价值。
在使用此特征的对象中测试该方法似乎非常耗时,而且进行更大规模的重构也很耗时。
那么我如何测试该特征以逐步重构任何使用它的 class?
只需使用此特征制作一个假人 class:
namespace Tests\YourTeasts;
use PHPUnit\Framework\TestCase;
use App\Model\SomeLogic\WhyDecidedToUseTrait;
class Dummy
{
use WhyDecidedToUseTrait;
}
class StoreExtraAttributesTraitTest extends TestCase
{
public function setTheStaticMethod()
{
Dummy::aMethodThatDoesSomeFancyStuff();
//Assertions are done here
}
}
因此您可以测试该方法,但在覆盖测试的情况下,我不知道何时显示或不显示。
在一段遗留代码中,我的任务是测试具有这样特征的静态函数:
namespace App\Model\SomeLogic;
trait WhyDecidedToUseTrait
{
public static function aMethodThatDoesSomeFancyStuff()
{
//Method Logic
}
}
并从documentation这一段使用getMockForTrait
方法。但在我的例子中,制作一个虚拟对象以测试一个静态函数,其中对象瞬间无用开始没有价值。
在使用此特征的对象中测试该方法似乎非常耗时,而且进行更大规模的重构也很耗时。
那么我如何测试该特征以逐步重构任何使用它的 class?
只需使用此特征制作一个假人 class:
namespace Tests\YourTeasts;
use PHPUnit\Framework\TestCase;
use App\Model\SomeLogic\WhyDecidedToUseTrait;
class Dummy
{
use WhyDecidedToUseTrait;
}
class StoreExtraAttributesTraitTest extends TestCase
{
public function setTheStaticMethod()
{
Dummy::aMethodThatDoesSomeFancyStuff();
//Assertions are done here
}
}
因此您可以测试该方法,但在覆盖测试的情况下,我不知道何时显示或不显示。