Как я могу поделиться кодом между тестами Laravel Dusk Browser, юнит-тестами и функциональными тестами - PullRequest
0 голосов
/ 07 ноября 2019

Модульные тесты, созданные с помощью php artisan make:test -- unit UnitTestClassName extends \Tests\TestCase

Функциональные тесты, созданные с помощью php artisan make:test FunctionalTestClassName, также расширяемые \Tests\TestCase

\Tests\TestCase extends Illuminate\Foundation\Testing\TestCase

Тем не менее, браузерный тест Laravel Dusk создает с php artisan dusk:make DuskTestClassName extend \Tests\DuskTestCase, что, в свою очередь, расширяет 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.
    ...
  }
  ...
}

и I use, которыечерта в моих тестах. Есть ли лучший способ? В частности, есть ли общий класс тестирования, который мне не хватает?

Особая проблема, с которой я сталкиваюсь, заключается в том, что моя черта не расширяет какой-либо TestCase, поэтому я не могу вызывать такие функции, как

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

в моем признаке, поэтому мне нужно продублировать этот код в TestCase и DuskTestCase.

1 Ответ

0 голосов
/ 08 ноября 2019

Просто вызовите методы assert статически в признаке:

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