【问题标题】:PHPUnit test a static function located in a traitPHPUnit 测试位于特征中的静态函数
【发布时间】:2019-06-28 09:29:15
【问题描述】:

在一段遗留代码中,我的任务是测试一个具有这样特征的静态函数:

namespace App\Model\SomeLogic;

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

从这块documentation 使用getMockForTrait 方法。但在我的例子中,为了测试一个静态函数而创建一个虚拟对象,其中对象瞬间无用开始没有任何价值。

此外,在使用此 trait 的对象中测试方法似乎非常耗时,而且进行更大规模的重构也很耗时。

那么我如何测试这个 trait 以便逐步重构任何使用它的类?

【问题讨论】:

  • 您想对该特征进行什么测试?它是一个公共静态函数,使用时会创建多个全局静态方法,我想了解更多为什么你认为 getMockForTrait() 不合适和/或为什么不首先使用全局静态方法,为什么特征?这应该有助于了解要测试的内容。

标签: php testing phpunit traits


【解决方案1】:

使用这个特性创建一个 Dummy 类:

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

因此您可以测试该方法,但在覆盖测试的情况下,我不知道何时显示或不显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多