【发布时间】:2017-01-16 02:31:56
【问题描述】:
[更新] 如果我使用查询生成器(即 DB::table()),测试似乎可以在内存中找到,但在使用 Eloquent 时使用主表。还是没有提示。
我已按照以下 2 个教程进行内存测试:
testing-like-a-boss-in-laravel-models
laravel-setting-up-an-in-memory-test-database
我首先尝试迁移/播种一个在我的主 mysql 数据库中不存在的表。一切都很好,没有在mysql中创建表并且测试断言成功。
然后我尝试使用真实表进行迁移/播种/内存测试,发现它是在我的主 mysql 数据库中播种的。
新尝试的内存测试。需要帮助: 1.不知道为什么我的主数据库被触动了。 2.如何验证内存数据库是否已填充?有什么方法可以浏览吗?
主要步骤如下:
在 app/config/testing/database.php 中
'default' => 'testing',
'testing' => array(
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
)
在 phpunit.xml 中,添加了这个:
<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="testing"/>
</php>
在TestCase类中:
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../../bootstrap/start.php';
}
在我的测试课中:
public function setUp()
{
parent::setUp();
Artisan::call('migrate');
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--database' => 'testing']);
}
【问题讨论】:
标签: sqlite laravel-4 phpunit in-memory