gpt4 book ai didi

php - 为我使用 Laravel 5.4 测试的 phpunit 播种一次几个表

转载 作者:行者123 更新时间:2023-11-28 20:51:13 25 4
gpt4 key购买 nike

我在内存中使用 sqlite 编写功能测试代码以获得更快的结果。

一切似乎都很好,但我有几个表格需要填写以便测试有效。它们是小表,几乎从不改变,所以我只想在 phpunit 命令的开头为它们播种一次。

这可能吗???

我所做的唯一一件事就是添加:Artisan::call('db:seed');createApplication() 但这将为每个测试播种一次,我不需要它..

知道我应该怎么做吗?

最佳答案

您可以随时使用环境变量来刷新数据库。我不知道这是否是最好的方法,但它对我有用。

添加变量到.env文件

DB_REFRESH=true

并更改CeatesApplication.php 特征方法:

   public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';

$app->make(Kernel::class)->bootstrap();

if(getenv('DB_REFRESH') === 'true') {
\Artisan::call('migrate:refresh');
\Artisan::call('db:seed');
putenv('DB_REFRESH=false');
}

return $app;
}

然后在 ExampleTest.php

中尝试
public function testBasicTest()
{
$this->assertTrue(true);
}

public function testChangeDatabase()
{
//if database changes here set variable to true
//and it will be refreshed before the next test
putenv("DB_REFRESH=true");
}

public function testRefresh()
{
//you have fresh database here
}

关于php - 为我使用 Laravel 5.4 测试的 phpunit 播种一次几个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805733/

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