phpunit 学习

单元测试是一个强大的功能,之前一直不会今日学习了一下,由于还在学习可能还存在问题。

首先,需要先进行 phpuit 的安装,正常情况下安装好 laravel 之后是已经安装该扩展。

安装

phpunit 安装

composer require --dev phpunit/phpunit

这样就安装好测试扩展了

编写测试案列

测试代码的生成

在 test 文件夹下面包含了两个文件 Feature 和 Unit,这两个文件夹有什么区别呢?Feature 更多的是对整个对象或者完整的一个 http 请求进行测试,而 Unit 更多是对单个方法进行测试。

// 在 Feature 目录下创建一个用户接口的测试类...
php artisan make:test UserApiTest

测试内容的编写

创建好之后进行相关代码的编写,我是对用户数据获取的接口进行测试

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\User;

class UserApiTest extends TestCase
{
    use RefreshDatabase;

    protected $user;

    protected function setUp(): void
    {
        parent::setUp();
        $this->createUser();
    }

    /**
     * A basic feature test example.
     *
     * @return void
     */
    public function testExample()
    {
        $token = $this->user->createNewToken();
        $response = $this->withHeaders(['Authorization' => 'Bearer '.$token])->get('/api/user');

        $response->assertStatus(200);
    }

    public function createUser()
    {
        $user = factory(User::class)->create();
        $this->user = $user;
    }
}

createNewToken 就是生成当前用户 token,具体方法按照各自的逻辑编写即可

代码流程:

  1. 我先生成了一条用户数据。
  2. 然后拿生成的用户进行 token 的换取。
  3. 最后将 token 附加到 http 请求的 header 头中。

进行测试

测试方案

我的 phpunit 在 vender/bin/phpunit 之中

//1、使用此命令会对所有测试案列进行测试
./vendor/bin/phpunit
//2、使用此命令会只对UserApiTest类中的方法进行测试
./vendor/bin/phpunit /var/www/project/tests/Feature/UserApiTest.php
//3、使用此命令会只对UserApiTest类中的testExample方法进行测试
./vendor/bin/phpunit --filter testExample  /var/www/project/tests/Feature/UserApiTest.php

错误解决

发现有报错

Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1 no such table: users (SQL: select * from "users" where "users"."id" = 2 limit 1)

后来发现需要使用 use RefreshDatabase 引入这个 trait 就可以了,主要是刷新一下数据表

测试结果

 

phpunit 学习


终于测试成功了。

总结

单元测试是一个很强大的功能,当你为自己的项目编写单元测试,之后进行代码修改或新增时候就可以使用一条命令可以看出当前代码是否存在问题,同时还可以看出对之前编写的代码是否产生影响,从而可以保证给你的前端小伙伴的接口可靠性。

 

原文链接:https://learnku.com/articles/41854

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值