首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在laravel 8中建立单元测试环境

在laravel 8中建立单元测试环境
EN

Stack Overflow用户
提问于 2021-02-08 18:22:02
回答 2查看 2.3K关注 0票数 1

因此,我目前正在使用laravel (v8)框架开发一个更大的web应用程序。显然,我有一个开发环境和一个生产环境,很快就会有一个分阶段的环境。因为有必要测试我的类(模型、控制器等)我已经写了一些单元测试。在这样做的时候,我遇到了一个问题:出于各种原因,我真的不想在实际的数据库(甚至是dev env上)上运行我的测试,举两个例子:

  1. 数据完整性
  2. 当我使用单独的内存数据库进行测试时,它们将运行得更快。

因此,我的问题是,如何设置我的laravel应用程序,以便它使用内存数据库(sqlite)运行单元测试,使用常规mysql数据库运行常规应用程序操作?

EN

回答 2

Stack Overflow用户

发布于 2021-02-08 18:27:15

您可以将SQLite用于测试目的。只需在项目根目录中的phpunit.xml文件中添加以下行

代码语言:javascript
复制
<PHP>
    ...
    <server name="DB_CONNECTION" value="sqlite"/>
    <server name="DB_DATABASE" value=":memory:"/>
    ...
</php>

在处理测试时,这将使用SQLite文件中的database.php连接进行迁移和数据库操作。

正常的应用程序将使用您的MySQL DB连接。

票数 0
EN

Stack Overflow用户

发布于 2021-02-08 18:30:33

你可以这样做:

代码语言:javascript
复制
class TestCase extends Illuminate\Foundation\Testing\TestCase
{
    public function createApplication()
    {
        $app = require __DIR__.'/../bootstrap/app.php';
 
        //Load .env.testing environment
        $app->loadEnvironmentFrom('.env.testing');
 
        $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
 
        return $app;
    }
}

参考文档:https://www.phplab.info/categories/laravel/how-to-specify-a-separate-database-for-unit-testing-on-laravel-5

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66107210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档