无法在Laravel中向Test Class添加多个函数

时间:2017-12-05 21:43:52

标签: php laravel unit-testing phpunit

我正在使用Laravel开发Web应用程序。我想单元测试一些逻辑。所以我创建了一个单元测试类,如下所示。

class AcceptationTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testCountUpWhenDifferenceIsOverOneWeek()
    {
        $acceptationRepo = new AcceptationRepo;
        //must count up on 5/12/2017
        $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017");
        $this->assertTrue($need_count_up);
    }


}

我从终端运行单元测试,它正在运行。然后我添加了另一个测试功能。所以我的测试类看起来像这样。

class AcceptationTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testCountUpWhenDifferenceIsOverOneWeek()
    {
        $acceptationRepo = new AcceptationRepo;
        //must count up on 5/12/2017
        $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017");
        $this->assertTrue($need_count_up);
    }

    public function testNotCountUpIfDifferenceIsExactlySeven(){
        $acceptationRepo = new AcceptationRepo;
        //must count up on 5/12/2017
        $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017");
        $this->assertTrue(!$need_count_up);

    }
}

当我从终端运行测试时,它显示此错误。

enter image description here

我仔细检查了我的第二个功能,没有错误。确保我删除了第一个函数并单独运行第二个函数。所以我的测试类看起来像这样。

class AcceptationTest extends TestCase
{


    public function testNotCountUpIfDifferenceIsExactlySeven(){
        $acceptationRepo = new AcceptationRepo;
        //must count up on 5/12/2017
        $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017");
        $this->assertTrue(!$need_count_up);

    }
}

正如您所看到的,测试类中只有一个函数,即新添加的函数。我再次从终端运行测试,现在它正在工作而不会抛出任何错误。我发现问题是添加了多个功能。但我需要这样做。我从终端读取了错误消息,它根本没有处理单元测试。

我尝试添加这两个属性

protected $preserveGlobalState = FALSE;
protected $runTestInSeparateProcess = TRUE;

当我跑步时,它给了我这个错误

enter image description here

1 个答案:

答案 0 :(得分:0)

一种选择是从代码中删除常量。您应该能够在使用常量的大多数地方引用env变量或config变量。

其他选项是使用这些标志来确保每个测试都有自己的过程:

class AcceptationTest extends TestCase
{

  protected $preserveGlobalState = FALSE;
  protected $runTestInSeparateProcess = TRUE;

最后,您可以在您定义常量

的位置添加测试
if (!defined('SITE_NAME')) define('SITE_NAME', 'foobar');