gpt4 book ai didi

sqlite - Laravel 4 PHPUnit Sqlite 数据库,在每次测试之前删除项目

转载 作者:行者123 更新时间:2023-12-01 16:35:56 26 4
gpt4 key购买 nike

我有一个 Laravel 4 应用程序,配置了 sqlite db 进行测试。

我正在工作台包中工作

我在 PHPUnit 测试中测试模型时遇到问题,因为我在模型上定义了一些独特的属性。我从我的基本测试类运行 Artisan::call('migrate', array('--bench' => 'vendor/webshop')); ,我从中扩展了其他测试。

我认为这会运行数据库迁移,但我认为它不会删除数据库中的模型。

因为如果我这样做

public function setUp() {

parent::setUp();

$this->order = Order::create(array(
"uniquekey" = "123"
));
}

我收到一条错误消息,提示由于违反唯一键规则而无法插入模型。

每次测试前我应该如何清理数据库?

最佳答案

您应该定义用于测试目的的环境。

实际上 Laravel 确实有一个适合您的 - 请注意 app/config 中的 testing 文件夹。

创建app/config/testing/database.php(或修改(如果存在))并放置:

return array(

'default' => 'sqlite',

'connections' => array(

'sqlite' => array(
'driver' => 'sqlite',
'database' => ':memory:', // this will do the trick ;)
'prefix' => '',
),
),
);

当您运行测试时,Laravel 会自动将其环境设置为“测试” - 无需使用它。SQLite 内存数据库是存储在 RAM 中的内存,因此速度很快 - 是的,测试也从空数据库开始。

关于sqlite - Laravel 4 PHPUnit Sqlite 数据库,在每次测试之前删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828930/

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