Laravel 5.8 Тестирование с базой данных должно выполняться по одному - PullRequest
0 голосов
/ 17 марта 2019

Странное поведение, которое может исходить из-за неправильного размещения.Я также не уверен, что вся информация поможет сохранить эту краткую информацию, но все же покроет проблему - обновления будут добавлены по мере необходимости.

Рассмотрим ванильную установку Laravel.

// UserTest.php

class UserTest extends TestCase
{
    use RefreshDatabase;

    public function testOne()
    {
        $user = User::make(['email' => 'one@neo.com']);
        $user->save();
        $this->assertTrue($user->id == 1);
    }

    public function testTwo()
    {
        $user = User::make(['email' => 'two@wot.com']);
        $user->save();
        $this->assertTrue($user->id == 1);
    }
}

Запуск тестовпо одному они оба проходят (phpunit --filter=testOne и phpunit --filter=testTwo).Запустите их последовательно, все, кроме первого, приведут к ошибке с ошибкой тайм-аута (phpunit).

Что происходит (я действительно хотел бы понять, почему)?И что за исправление?

Что я пробовал:

  1. Использовать SQLite в памяти.
  2. Использовать DatabaseTransactions вместо DatabaseRefresh

Хотелось бы быть как можно ближе к производству.

...