gpt4 book ai didi

php - 在 Laravel Dusk 测试运行后从数据库中删除模型?

转载 作者:行者123 更新时间:2023-12-05 04:11:45 26 4
gpt4 key购买 nike

我刚开始研究 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();
}
}
}

最佳答案

有多种方法可以实现这一点:

  1. 使用 DatabaseTransactions 特性,以便在每次测试后都有一个事务回滚。为此,请在您的 PHP 文件中添加:use Illuminate\Foundation\Testing\DatabaseTransactions;,并在您的测试类中添加use DatabaseTransactions;
  2. 如果您想在每次测试前后迁移和迁移回滚而不是将它们包装到事务中,您可能需要使用 DatabaseMigrations 特性。为此,请添加:use Illuminate\Foundation\Testing\DatabaseMigrations; 在您的 php 文件中并添加 use DatabaseMigrations; 在您的测试类中
  3. 如果您想使用自定义设置和拆卸方法,请使用afterApplicationCreatedbeforeApplicationDestroyed 方法而不是注册回调

关于php - 在 Laravel Dusk 测试运行后从数据库中删除模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42067810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com