gpt4 book ai didi

php - 在 Laravel 5.4 中设置用于测试的内存 SQLite 数据库

转载 作者:IT王子 更新时间:2023-10-29 06:24:06 25 4
gpt4 key购买 nike

我正在使用 Dusk 为 Laravel 5.4 应用程序开发一套浏览器测试。其中一项测试检查是否创建了一个对象,因为这是一个浏览器测试,所以当单击提交按钮时,该值将保存到数据库中。显然,我不希望我的数据库因测试数据而变得杂乱无章,而且还有一个问题,因为对象的名称必须是唯一的,因此测试将在第一次运行后失败。我决定解决这个问题的最佳方法是实现一个测试数据库,该数据库在每个测试周期结束时被清除。但是我在设置它时遇到了一些问题。

目前,我的代码没有抛出任何错误,但 phpunit 只是不会使用测试数据库。我在研究如何实现数据库时安装了 codeception,但我不确定如何使用它。这是我目前拥有的代码:

.环境

DB_CONNECTION=mysql

.环境测试

APP_ENV=testing
APP_DEBUG=true
APP_KEY=this_has_a_real_key
APP_URL=http://localhost:8000

DB_CONNECTION=sqlite_testing

数据库.php

'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [

...

'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],

...

phpunit.xml

<env name="DB_CONNECTION" value="sqlite_testing" />

DuskTestCase.php

abstract class DuskTestCase extends BaseTestCase
{
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
putenv('DB_CONNECTION=sqlite_testing');

$app = require __DIR__ . '/../bootstrap/app.php';

$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();

return $app;
}

public function setUp()
{
parent::setUp();
//Artisan::call('migrate:refresh');
Artisan::call('migrate');
Artisan::call('db:seed');
}

/**
* Prepare for Dusk test execution.
*
* @beforeClass
* @return void
*/
public static function prepare()
{
static::startChromeDriver();
}

/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()
);
}


public function tearDown()
{
Artisan::call('migrate:reset');
parent::tearDown();
}

}

DuskTestCase 和.env.testing 是完整展示的,其他的有相关部分。我如何修改此代码以使 phpunit 识别并使用我的 sqlite_testing 数据库?

最佳答案

这是因为你的配置被缓存了。

使用 php artisan config:clear 清除你的配置缓存

现在 phpunit 将读取 xml 文件。

永远不要在开发环境中缓存你的配置 ;)

关于php - 在 Laravel 5.4 中设置用于测试的内存 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677477/

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