Laravel 是一个在 Linux 环境下表现非常出色的 PHP 框架,但它在 Windows 环境下可能会遇到一些兼容性和配置问题。为了调试或没试的方便可以在 Windows 环境下进行 Laravel PHPUnit进行本地调试和测试。
本地主要针对断点调试效果非常高效。
在 Laravel 中,使用 PHPUnit 进行数据库测试通常涉及到设置数据库迁移和种子数据,然后执行实际的查询测试。以下是如何在 ExampleTest
类中接入 MySQL 数据库并查询一个表的步骤:
- ** php.ini **
php的模块已经加载了mongodb.
- 打开php.ini
extension=php_mongodb - php -v #版本号
- php -m #查看php-mondgo
注意本地php版与liunx环境的php版要一致,我这边都是php8.0
-
** 检查是否已安装 jenssegers/mongodb 包**
确认您已经在项目中通过 Composer 安装了 jenssegers/mongodb 包。如果没有,请运行以下命令进行安装:
composer require jenssegers/mongodb:~3.8.0 -
配置数据库:确保
.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
··· -
** 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 -
编
写测试:在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); // 确保使用正确的断言方法
}
}
-
运行测试:使用 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.
```
- **在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 的测试环境中安全地测试数据库查询了。