gpt4 book ai didi

mysql - Laravel:无法使用 RefreshDatabase 特性通过浏览器测试

转载 作者:可可西里 更新时间:2023-11-01 07:45:36 24 4
gpt4 key购买 nike

如果我使用 RefreshDatabase 特征,我的测试将失败。

没有 trait -- 测试将通过但数据保留在数据库中。

我正在使用:

  • Laravel 5.5(一个新的)
  • Laradock:nginx mysql selenium

正在从 laradock 的工作区运行测试。

这是测试,简单,来自官方documentation .

<?php

namespace Tests\Browser;

use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{
use RefreshDatabase;

/**
* A Dusk test example.
*
* @return void
*/
public function testLogin()
{
$user = factory(User::class)->create();

// dump('wait...');
// sleep(15);
// dump('go!');

$this->browse(function (Browser $browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home')
;
});
}
}

dump/sleep/dump只是为了查看数据库中是否创建了用户。 不是!

php artisan dusk 的结果是:

There was 1 failure:

1) Tests\Browser\LoginTest::testLogin
Failed asserting that '/login' matches PCRE pattern "/^\/home/u".

/var/www/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:53
/var/www/tests/Browser/LoginTest.php:32
/var/www/vendor/laravel/dusk/src/TestCase.php:92
/var/www/tests/Browser/LoginTest.php:34

注意:
断言文本 “这些凭据与我们的记录不匹配。” 将为真,因此我相信用户从未被创建。

最佳答案

Laravel Dusk文件提到:

Most of the tests you write will interact with pages that retrieve data from your application's database; however, your Dusk tests should never use the RefreshDatabase trait. The RefreshDatabase trait leverages database transactions which will not be applicable or available across HTTP requests. Instead, use the DatabaseMigrations trait, which re-migrates the database for each test:

所以答案是使用 DatabaseMigrations 而不是 RefreshDatabase

关于mysql - Laravel:无法使用 RefreshDatabase 特性通过浏览器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514745/

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