使用PHPUnit使用本地调试代替远程调试,快速提高开发效率

发布于:2024-12-18 ⋅ 阅读:(114) ⋅ 点赞:(0)

Laravel 是一个在 Linux 环境下表现非常出色的 PHP 框架,但它在 Windows 环境下可能会遇到一些兼容性和配置问题。为了调试或没试的方便可以在 Windows 环境下进行 Laravel PHPUnit进行本地调试和测试。
本地主要针对断点调试效果非常高效。
在这里插入图片描述

在 Laravel 中,使用 PHPUnit 进行数据库测试通常涉及到设置数据库迁移和种子数据,然后执行实际的查询测试。以下是如何在 ExampleTest 类中接入 MySQL 数据库并查询一个表的步骤:

  1. ** php.ini **
    php的模块已经加载了mongodb.
  • 打开php.ini
    extension=php_mongodb
  • php -v #版本号
  • php -m #查看php-mondgo
    注意本地php版与liunx环境的php版要一致,我这边都是php8.0
  1. ** 检查是否已安装 jenssegers/mongodb 包**
    确认您已经在项目中通过 Composer 安装了 jenssegers/mongodb 包。如果没有,请运行以下命令进行安装:
    composer require jenssegers/mongodb:~3.8.0

  2. 配置数据库:确保 .env 文件中配置了正确的 MySQL 数据库连接信息。
    户名和密码。
    ···
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=your_database_name
    DB_USERNAME=your_database_user
    DB_PASSWORD=your_database_password
    ···

  3. ** config/app.php **
    检查 config/app.php 文件: 确保 config/app.php 文件中的 providers 数组中包含了 Jenssegers\Mongodb\MongodbServiceProvider 类。它应该看起来像这样:
    ‘providers’ => [
    // 其他服务提供者…
    Jenssegers\Mongodb\MongodbServiceProvider::class,
    ],
    发布配置文件: 确保 jenssegers/mongodb 的配置文件已经被发布。如果没有,请运行以下命令:
    php artisan vendor:publish --provider="Jenssegers\Mongodb\MongodbServicePr


  4. 写测试
    :在 ExampleTest 类中编写测试方法来查询表。

<?php

namespace Tests\Unit;

use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\CreatesApplication;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

class ExampleTest extends BaseTestCase
{

     use CreatesApplication;
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }

    public function testMongDb()
    {
        // 使用 MongoDB 连接
        $categories = DB::connection('mongodb');
        $this->assertNotEmpty($categories); // 确保使用正确的断言方法
    }
}
 
  1. 运行测试:使用 PHPUnit 运行你的测试。

.\php8.0.2nts\php.exe E:/case2024/dilu_simple_project/dilu-admin/vendor/phpunit/phpunit/phpunit --configuration E:\case2024\dilu_simple_project\dilu-admin\phpunit.xml --filter “/(Tests\Unit\ExampleTest::testMongDb)( .*)?$/” --test-suffix ExampleTest.php E:\case2024\dilu_simple_project\dilu-admin\tests\Unit --teamcity
Testing started at 10:41 …
PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
```

  1. **在PHPStorm 2023 **运行见截图
    在这里插入图片描述
继续扩展一下正确的代码:
    public function testMongDb()
    {
        // 使用 MongoDB 连接
        // 连接到 MongoDB 的 esg 数据库
        $connection = DB::connection('mongodb')->getMongoDB('esg');

// 获取 chat 集合的所有记录
        $chats =$connection->chat->find();

// 如果你想要将结果转换为数组,可以使用以下代码
        $chatsArray = [];
        foreach ($chats as $chat) {
            $chatsArray[] = (array)$chat;
        }

// 打印结果
        print_r($chatsArray);
        $this->assertTrue(true);
    }

请注意,RefreshDatabase trait 会在每个测试方法前后运行迁移和种子,确保测试环境的数据库是干净的。如果你不想在每个测试方法后都重新运行迁移和种子,可以使用 WithoutMiddleware trait 来跳过中间件。

确保你的测试环境配置正确,并且所有的服务提供者和门面都已正确加载。这样你就可以在 Laravel 的测试环境中安全地测试数据库查询了。


网站公告

今日签到

点亮在社区的每一天
去签到