laravel:单元测试之model(10.27.0)
一,相关文档
https://learnku.com/docs/laravel/10.x/testing/14895
二,php代码
1,查看laravel自带的phpunit的版本
liuhongdi@lhdpc:/data/laravel/dignews$ ./vendor/bin/phpunit --version
PHPUnit 10.4.1 by Sebastian Bergmann and contributors.
2,创建测试类:
liuhongdi@lhdpc:/data/laravel/dignews$ php artisan make:test SUserTest --unit
INFO Test [tests/Unit/SUserTest.php] created successfully.
3,测试类的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?php namespace Tests\Unit; use Illuminate\Database\Eloquent\Model; //use PHPUnit\Framework\TestCase; use App\Models\SUser; use Tests\TestCase; class SUserTest extends TestCase { /** * A basic unit test example. */ public function test_example(): void { //得到数据 $model = new SUser(); $obj = $model ->getOneById(1); //断言 $userId = $obj [ 'user_id' ]; $userName = $obj [ 'username' ]; $this ->assertEquals(1, $userId ); $this ->assertEquals( 'laoliu' , $userName ); } } |
三,测试效果
liuhongdi@lhdpc:/data/laravel/dignews$ vendor/bin/phpunit --filter=SUserTest
PHPUnit 10.4.1 by Sebastian Bergmann and contributors.
Runtime: PHP 8.1.1
Configuration: /data/laravel/dignews/phpunit.xml
. 1 / 1 (100%)
Time: 00:00.096, Memory: 24.00 MB
OK (1 test, 2 assertions)
四,可能出现的报错:
1,报错
1) Error: Call to a member function connection() on null
2,解决:
在测试类中:
注释掉下面一行,如下
//use PHPUnit\Framework\TestCase;
添加Tests\TestCase,如下,
use Tests\TestCase;
3,原因:
检查测试类,它需要在扩展使用 Tests\TestCase;
而不是使用 PHPUnit\Framework\TestCase;(laravel默认使用的类)
Tests\TestCase类负责设置应用程序,
如果使用PHPunit\Framework\TestCase,模型将无法与数据库通信。
五,查看laravel框架的版本:
liuhongdi@lhdpc:/data/laravel/dignews$ php artisan --version
Laravel Framework 10.27.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2022-10-30 javascript:监控video全屏时取消静音(chrome 107.0.5304.87)