如何在Laravel Dusk Browser测试,单元测试和功能测试之间共享代码

时间:2019-11-06 23:37:51

标签: laravel-dusk laravel-testing

使用php artisan make:test -- unit UnitTestClassName创建的单元测试扩展了\Tests\TestCase

使用php artisan make:test FunctionalTestClassName创建的功能测试也扩展了\Tests\TestCase

\Tests\TestCase扩展了Illuminate\Foundation\Testing\TestCase

但是,使用php artisan dusk:make DuskTestClassName扩展\Tests\DuskTestCase创建Laravel Dusk浏览器测试用例,而扩展了Laravel\Dusk\TestCase

似乎没有通用的类可以向其添加诸如要测试的用户(至少在供应商文件夹之外)之类的东西。

要允许共享代码,我在app \ Traits \ TestData.php中创建了一个特征:

<?php
namespace App\Traits;
trait TestData {
  static $testUserId = 40;
  public static function checkTestData() {
    // returns an array of strings describing any problems with the test data setup.
    ...
  }
  ...
}

,然后我在测试中use表现出这一特征。有什么更好的办法吗?具体来说,我是否缺少通用的测试课程?

我遇到的特定问题是我的特征无法扩展任何TestCase,因此我无法调用

之类的函数。

$this->assertNotNull($testUser,"Test user not found");

是我的特质,所以我需要在TestCase和DuskTestCase中复制该代码。

1 个答案:

答案 0 :(得分:0)

只需在特征中静态调用assert方法:

self::assertNotNull($testUser,"Test user not found");