Laravel Dusk,DatabaseTransactions 没有执行回滚

Laravel Dusk, DatabaseTransactions not doing the RollBack

我正在使用 Laravel Dusk,以下 Register 测试工作正常,除了它不回滚事务(即在 'Register' 上创建的用户记录始终保留在数据库中) . 我的表都设置为使用 InnoDB 引擎。

知道发生了什么事吗?我把日志放在很多地方,看起来没有什么特别不对的地方。我也没有在 laravel.log 文件中收到任何错误。

use DatabaseTransactions;

protected $connectionsToTransact = [ 'mysql' ];

/**
 * A basic browser test example.
 *
 * @return void
 */
public function testBasicExample()
{
    $this->browse(function (Browser $browser) {
        $browser->visit('/')
                ->type('name', 'Automated User')
                ->type('email', 'autoemail@hotmail.com')
                ->type('password', 'aaaaaa')
                ->type('password_confirmation', 'aaaaaa')
                ->press('Register')
                ->assertPathIs('/login');
    });

}

这是我在 config/database 的连接。php

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => 'innoDB',
    ],

更新

我尝试在断言之后更新模型,但它也不起作用。似乎所有的数据库事务一般都没有被执行。

你不能在 Dusk 测试中使用 DatabaseTransactions。由于真正的浏览器正在打开您的网站,因此您的测试在不同的进程中运行。

您必须自己撤销更改,例如通过删除注册用户。