【问题标题】:Testing method with php unit [duplicate]使用php单元的测试方法[重复]
【发布时间】:2016-12-13 18:20:32
【问题描述】:

我是 TDD 新手。我有一个简单的类方法

private function getSelfSubmissionMsg($type)
{
    switch ($type) {
        case 'efl':
            return 'Some message.';
        case 'split':
            return 'Some other message.';
    }
}

如何使用 phpunit 测试此方法

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

    您不需要对每个函数进行测试,而是应该专注于为所有执行路径获取测试。所以没有必要测试单独的私有函数,因为它们应该是实现细节的一部分,并且只是你正在测试的单元的子部分。

    如果您测试所有私有函数,您将不得不在每次重构代码时更新测试,但如果您测试代码协定(公共方法),您可以重构实现细节,同时让测试告诉您是否你不小心更改了合同。

    附言。刚开始使用 TDD 时想要测试私有方法是正常的,但您很快就会发现没有必要

    【讨论】:

      【解决方案2】:

      这是一个示例测试用例:

      <?php
      use PHPUnit\Framework\TestCase;
      
      class SumissionsTest extends TestCase
      {
          public function testSelfSubmissionMsg()
          {
              //Whatever your class name is
              $submission = new Submission();
              $elf   = $submission->getSelfSubmissionMsg('elf');
              $split = $submission->getSelfSubmissionMsg('split');
              $this->assertEquals($elf, 'Some message.');
              $this->assertEquals($split, 'Some other message.');
          }
      }
      

      【讨论】:

      • getSelfSubmissionMsg() 方法是私有的。如果该方法在 Trait 中,需要进行哪些更改?
      • 查看this 调试私有方法的文章
      猜你喜欢
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多