我正在尝试在与我的应用程序分开的文件数据库中的 sqlite 上运行一些浏览器测试。
在一个过程中我运行
APP_ENV=local artisan serve --env=dusk.local
在另一个我跑
APP_ENV=local artisan dusk
似乎发生的是我的测试运行,数据库迁移,运行我的测试,该测试通过然后按预期回滚。
然而,在成功的测试之后,我的 Laravel 日志中充满了大量的异常,这些异常与在没有模式和数据的情况下发出请求时所预期的不同,以及其他诸如
General error: 17 database schema has changed in [...]/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91
我不明白为什么它会在成功测试后提出请求或做某事。
class RegistrationTest extends DuskTestCase
{
use DatabaseMigrations;
public function testUserCanRegister()
{
// Some factories here
$this->browse(function (Browser $browser) {
$browser->visit('/register')
->assertSee('Sign up');
});
}
哪个产量
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 5.5 seconds, Memory: 22.00MB
OK (1 test, 1 assertion)
但是,如果我跟踪它们,我会看到我的日志文件充满了错误。
任何人都能够阐明可能发生的事情?
我正在使用的黄昏环境文件如下
APP_ENV=local
APP_KEY=...
APP_URL=http://localhost:8000
DB_DEFAULT=app_testing
DB_CONNECTION=app_testing
SECOND_DB_CONNECTION=other_testing #app uses 2 separate databases
SESSION_DRIVER=file
更新:一些格式错误的资产 URL 导致后续请求失败。
但是,如果我禁用回滚,则不会创建任何上述记录的异常。如果数据存在,回滚似乎会导致问题。
如果我允许回滚但在测试期间不运行任何工厂,它可以很好地回滚。
如果我在测试期间插入数据后允许回滚,它会回滚但有很多异常。