Dim*_*sta 15
复制你.env
的.env.testing
,然后编辑.env.testing
文件并更改APP_ENV
参数使其像APP_ENV=testing
这样,这样你就可以在这个新文件中指定你的设置
如果您不想创建新.env.testing
文件,您必须phpunit.xml
在php部分中使用您需要的值指定变量,如下所示
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value="testing"/>
</php>
Run Code Online (Sandbox Code Playgroud)
只需使用名称部分中的键值和值部分中该键的值即可.
对于这个例子,我指定phpunit使用带有测试名称的sqlite数据库.
顺便说一句,在config/database.php中我添加了这个
'default' => env('DB_CONNECTION', 'mysql'),
默认使用mysql,除非我指定不同的东西,就像在这种情况下一样.
Bog*_*dan 11
您可以覆盖.env
文件中使用的TestCase
文件,引导框架进行测试.
更加具体:
测试/ TestCase.php
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
/* @var \Illuminate\Foundation\Application $app */
$app = require __DIR__ . '/../bootstrap/app.php';
$app->loadEnvironmentFrom('.env.testing'); // specify the file to use for environment, must be run before boostrap
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
return $app;
}
Run Code Online (Sandbox Code Playgroud)
所有扩展的测试TestCase
都将使用此配置文件.
请注意,定义的任何设置都phpunit.xml
将覆盖此配置.
启动Laravel5.4,createApplication
不再找到该功能tests\TestCase
.它已被转移到tests\CreatesApplication
特质.
在您的开发机器上创建本地数据库,例如“local_test_db”
创建一个新的 .env.testing 文件。
DB_DATABASE=local_test_db
DB_USERNAME=root
Run Code Online (Sandbox Code Playgroud)
确保您的 phpunit.xml 文件至少具有以下一个环境变量:
<php>
<env name="APP_ENV" value="testing"/>
</php>
Run Code Online (Sandbox Code Playgroud)
最后,您的基本测试用例(TestCase.php)应该运行迁移以用表填充数据库:
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
return $app;
}
public function setUp()
{
parent::setUp();
Artisan::call('migrate');
}
public function tearDown()
{
Artisan::call('migrate:reset');
parent::tearDown();
}
Run Code Online (Sandbox Code Playgroud)
这是2019年
在解决这个问题之前,我已经解决了很长时间。
这是我的假设:
如果您还发现很难使您的PHPUnit.xml与.env.testing文件进行对话,那么您很可能正在使用PHPStorm!
如果是这样,请继续阅读。
如果没有,不...这无济于事。
好...
干得好:
这样做是为了使xml文件中的所有更改生效。因此,继续,创建.env.testing文件,创建用于测试的首选数据库配置变量...,然后尝试再次运行测试!
除了在单元测试开始之前暂时将 .env.testing 重命名为 .env 之外,我想不出其他方法。
您可以在 bootstrap/autoload.php 中放置一些逻辑,因为这是 phpunit 在加载应用程序之前使用的引导文件。
归档时间: |
|
查看次数: |
16320 次 |
最近记录: |