В моем приложении Lumen, когда я выполняю
php artisan migrate --seed
, оно работает хорошо.
Но когда я пытаюсь запустить свои тесты с phpunit
, оно не запускает миграцию изпакет Laravel, который я кодировал, поэтому все тесты не пройдены
Я запускаю свои миграции в своем тесте с:
Artisan::call('migrate');
, который я использую в тестировании памяти для более быстрого запуска.
Вот мое приложение Lumen Testcase.php
abstract class TestCase extends Laravel\Lumen\Testing\TestCase
{
/** @var array */
protected $dispatchedNotifications = [];
protected static $applicationRefreshed = false;
/**
* Creates the application.
*
* @return \Laravel\Lumen\Application
*/
/**
* Creates the application.
*
*/
public function createApplication()
{
return self::initialize();
}
private static $configurationApp = null;
public static function initialize()
{
$app = require __DIR__ . '/../bootstrap/app.php';
if (is_null(self::$configurationApp)) {
$app->environment('testing');
if (config('database.default') == 'sqlite') {
$db = app()->make('db');
$db->connection()->getPdo()->exec("pragma foreign_keys=1");
}
Artisan::call('migrate');
Artisan::call('db:seed');
self::$configurationApp = $app;
}
return $app;
}
/**
* Refresh the application instance.
*
* @return void
*/
protected function forceRefreshApplication()
{
if (!is_null($this->app)) {
$this->app->flush();
}
$this->app = null;
self::$configurationApp = null;
self::$applicationRefreshed = true;
parent::refreshApplication();
}
...
В моем пакете я использую метод загрузки поставщика услуг:
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
, а затем тестовый пример:
class TournamentsTest extends TestCase
{
use DatabaseTransactions, AttachJwtToken;
protected $initialTournamentNum = 6;
protected $defaultPagintation = 25;
protected $user;
/** @test */
public function user_can_see_tournament_list()
{
$response = $this
->call('GET', '/tournaments');
$this->assertEquals(HttpResponse::HTTP_OK, $response->status());
}
...
Все мои тесты не пройдены:
PDOException: SQLSTATE[HY000]: General error: 1 no such table: ken_venue
ken_venue - это таблица из пакета laravel
На самом деле, этот же пакет хорошо работает в Laravel 5.7приложение.но я переношу это приложение в приложение Lumen.
Есть идеи, почему это происходит?