PHPUnit测试位于特征中的静态函数

时间:2019-06-28 09:29:15

标签: php testing phpunit legacy-code php-traits

在一段旧代码中,我受命测试具有如下特征的静态函数:

namespace App\Model\SomeLogic;

trait WhyDecidedToUseTrait
{
   public static function aMethodThatDoesSomeFancyStuff()
   {
     //Method Logic
   }
}

然后使用getMockForTrait方法从这documentation段开始。但是,在我的情况下,为了测试静态函数(该对象从一开始就无用)开始,创建一个虚拟对象是没有价值的。

在具有此特征的对象中测试该方法似乎很耗时,而且进行大规模的重构也很耗时。

那么我如何测试该特征以逐步重构使用该特征的任何类?

1 个答案:

答案 0 :(得分:0)

只需使用以下特征创建一个虚拟类:

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
   }
}

因此,您可以测试该方法,但是如果进行os coverage测试,我不知道何时显示该方法。