Удаление моделей из базы данных после запуска тестов Laravel Dusk?

Я только начинаю смотреть на Dusk — и тестирую некоторые пользовательские функции.

Ниже приведен мой текущий тест, однако я пытаюсь очистить после себя — например, недавно созданный пользователь должен быть удален из базы данных, что он сделал.

Я пытался использовать tearDown метод, но он, кажется, на самом деле не удаляет его.

Как бы я обычно занимался раскручиванием временных моделей, которые нужно надевать после?

<?php

namespace Tests\Browser;

use App\User;
use Tests\DuskTestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class LoginTest extends DuskTestCase
{

protected $user = null;

public function testIfPublicUsersLogin()
{
$this->user = $user = factory(User::class)->create([
'is_student' => 0
]);

$this->browse(function ($browser) use ($user) {

$browser->visit('/login')
->assertVisible('#email')
->type('#email', $user->email)
->type('#password', 'secret')
->press('#loginButton')
->assertPathIs('/play');
});
}

public function tearDown()
{
if ($this->user) {
User::destroy($this->user->id);
//$this->user->delete();
}
}
}

2

Решение

Есть несколько способов добиться этого:

  1. Используйте признак DatabaseTransactions, чтобы после каждого теста выполнялся откат транзакции. Для этого добавьте: use Illuminate\Foundation\Testing\DatabaseTransactions; в вашем php файле и добавьте use DatabaseTransactions; в вашем тестовом классе
  2. Возможно, вы захотите использовать черту DatabaseMigrations, если хотите перенести и перенести откат до и после каждого теста, а не заключать их в транзакции. Для этого добавьте: use Illuminate\Foundation\Testing\DatabaseMigrations; в вашем php файле и добавьте use DatabaseMigrations; в вашем тестовом классе
  3. Если вы хотите использовать пользовательские методы настройки и разрыва, используйте
    afterApplicationCreated а также beforeApplicationDestroyed методы
    вместо этого, чтобы зарегистрировать обратные вызовы
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]