2017-02-06 7 views
2

Я только начинаю смотреть на сумерки - и я тестирую некоторые пользовательские функции.Удаление моделей из базы данных после тестирования Laravel 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. Если вы хотите использовать пользовательские настройки и Teardown методы, использовать afterApplicationCreated и beforeApplicationDestroyed методы вместо того, чтобы зарегистрировать обратные вызовы