[英]Deleting models from database after Laravel Dusk tests have run?
我刚开始看 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();
}
}
}
有多种方法可以实现这一点:
use Illuminate\\Foundation\\Testing\\DatabaseTransactions;
在你的 php 文件中添加use DatabaseTransactions;
在你的测试课上use Illuminate\\Foundation\\Testing\\DatabaseMigrations;
在你的 php 文件中添加use DatabaseMigrations;
在你的测试课上afterApplicationCreated
和beforeApplicationDestroyed
方法来注册回调<?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');
$user->delete();
});
}
}
此代码行$user->delete
测试后删除您的数据。 tearDown
方法没用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.