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

首先,需要先进行 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 就可以了,主要是刷新一下数据表

测试结果

终于测试成功了。

总结

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

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

phpunit 学习相关推荐

  1. php_os用法,PHP教程:PHPUnit学习笔记(二)PHPUnit基本用法

    上篇日记中我介绍了phpunit的配置方法,今天就开始介绍如何用PHPUnit来编写测试用例,下面我来引入一个测试PHP数组操作的测试用例,这个例子会给你展示PHPUnit常规的用法和测试用例编写的步 ...

  2. phpunit学习第一章

    用phpUnit入门TDD 用phpunit实战TDD系列 从一个银行账户开始 假设你已经 安装了phpunit. 我们从一个简单的银行账户的例子开始了解TDD(Test-Driven-Develop ...

  3. PHPUnit 3.4.10 在windows上配置

    找到phpunit.bat,内容如下 1 2 set PHPBIN="@php_bin@" %PHPBIN% "@bin_dir@\phpunit" %* 修改 ...

  4. PHPUnit测试框架学习(1)

    网站http://www.phpunit.cn/ php学习的API接口测试

  5. Zend Studio使用教程:使用PHPUnit检测代码(四)

    2019独角兽企业重金招聘Python工程师标准>>> 本教程演示如何在代码上创建和运行PHPUnit Test.您将学习如何创建和运行包含许多测试用例的单个单元测试用例和测试套件. ...

  6. Laravel 测试: PHPUnit 入门教程

    介绍 PHPUnit 测试的基础知识,使用基本的 PHPUnit 断言和 Laravel 测试助手. 介绍 PHPUnit 是最古老和最著名的 PHP 单元测试包之一.它主要用于单元测试,这意味着可以 ...

  7. php的old函数,laravel单元测试之phpUnit中old()函数报错解决

    php 的 laravel单元测试之phpUnit中old()函数报错解决 前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问 ...

  8. php搬迁安装,【资料搬迁】安装phpunit

    学习php也有一段时间了,学这个的目的其实也就是为了做单元测试,既然要做单元测试,那必须的有其相应的工具吧. 今天在查阅相关资料的时候了解到需要先安装 phpunit.那咱们就先来安装一下呗. 简述: ...

  9. 国外PHP学习网站书籍资料汇总

    这篇文章汇总了全面多样的PHP学习资源,包括书籍.网站.文章等,帮助你提高PHP开发能力,巩固PHP知识.结合上一篇<重磅资料!Github上的PHP资源汇总大全>,一定可以让你的PHP技 ...

最新文章

  1. python 中 is 与 == 的区别
  2. 怎么定义图像的质量?如何评价图像的质量?
  3. Word查找的通配符和特殊字符!
  4. GoogLeNet代码解读
  5. GDCM:gdcm::DataElement的测试程序
  6. vue xunidom_vue的虚拟dom(Virtual DOM )
  7. 2016/1/4 学习笔记 数据类型转换 注释 语句
  8. LinuxQt工作笔记-查看程序工作目录
  9. 将某一类型文件还原为无默认打开方式
  10. Windows与Linux之间的文件自动同步
  11. S32K116使用记录
  12. G-sensor概述及常用概念整理【转】
  13. 【Matlab函数知识点合集】新手入门第十四天
  14. 随手练——小米OJ 高弗雷勋爵
  15. 独立服务器和云服务器的分类以及是如何区分的?
  16. golang 获取文件大小
  17. 在项目中实现多数据源和读写分离的配置
  18. InfluxDB添加用户认证
  19. 39、Docker(镜像命令)
  20. linux 目录中的文件和子目录生成jar包文件的方法

热门文章

  1. 图像处理之傅里叶变换
  2. 1.3 测控电路的信号类型、测控电路的类型与组成、测控电路的发展趋势
  3. 从QuickTime到Beats:回顾苹果历史上的音乐传奇
  4. 五分钟精通正则表达式,如果没精通,那就再加两分钟
  5. 锘崴科技王爽:提升效能与安全平衡点,让隐私计算发挥更大潜力价值 | 数据猿专访...
  6. 用好CRM,它能通过这6种步为企业开源节流
  7. 信息传输计算机服务和软件行业,信息传输,软件和信息技术服务业 是 什么服务业...
  8. PB的Graph图形控件
  9. 在chrome下安装Proxy SwitchySharp插件
  10. 《大学物理:电磁学》