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
。由于真正的浏览器正在打开您的网站,因此您的测试在不同的进程中运行。
您必须自己撤销更改,例如通过删除注册用户。
我正在使用 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
。由于真正的浏览器正在打开您的网站,因此您的测试在不同的进程中运行。
您必须自己撤销更改,例如通过删除注册用户。