零基础学测试 2 - 进一步理解 Laravel 的测试与 PHP Unit 的关系

细心的读者可以发现,上一讲中创建的用例继承的是 PHPUnit 的测试基类。

<?php

namespace Tests;

use PHPUnit\Framework\TestCase;

class PHPUnitTest extends TestCase
{
    public function testAssertions()
    {
        $this->assertTrue(true);
        $this->assertFalse(false);
        $this->assertNull(null); 
    }
}

而 Laravel 的测试用例则是继承自 tests 目录下的 TestCase 基类,该基类只是在 PHPUnit 的 TestCase 类的基础上增加了一些功能(HTTP 测试、命令行测试、数据库测试等)。

例如,自带的 ExampleTest 测试使用了 Laravel 提供的 HTTP 测试功能

// /tests/Feature/ExampleTest.php
<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {   
        // /vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php
        $response = $this->get('/');

        // /vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php
        $response->assertStatus(200);
    }
}

通过修改路由文件来让测试用例无法通过

// /routes/web.php
Route::get('/', function () {
    abort(404);
});

运行测试

$ vendor/bin/phpunit tests/Feature/ExampleTest.php
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Image placeholder
V1ctor
未设置
  52人点赞

没有讨论,发表一下自己的看法吧

推荐文章
零基础学测试 1 - 在 Laravel 中使用 PHPUnit

创建Laravel应用$laravelnewmind-geek-laravel-test-demo进入项目$cdmind-geek-laravel-test-demo运行自带的测试用例$vendor/

零基础学习Swift中的数据科学

概述Swift正迅速成为数据科学中最强大、最有效的语言之一Swift与Python非常相似,所以你会发现2种语言的转换非常平滑我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数据科学

零基础的小白怎么学习数据分析?

微信公众号:「Python读财」如有问题或建议,请公众号留言作为一个从超级菜鸟阶段过来的人,也曾迷茫,也曾面对一大堆资料不知所措,从无到有踩过太多的坑,在这里分享一下我总结出来的数据分析学习路径,为了

有vue基础学react难吗?

React是一个用于前端开发的开源JavaScript库,由Facebook开发。其基于组件的库使您可以为Web应用程序构建高质量的用户界面。vue.js是一个构建用户界面的渐进式框架。采用自底向上增

比特币新手图文教程:一步一步教会你用比特币HD钱包,批量产生多个比特币地址和私钥

HD钱包可以快速方便的生成多个比特币地址,并且不需要备份对应的私钥。你只需要备份一个父私钥就可以把所有的私钥和地址全部恢复。比特币hd钱包解决了下面几个问题: 每次生成一个新地址都需要备份一遍私钥,操

一个 Golang 项目的测试实践全记录

桔妹导读:最近有一个项目,链路涉及了4个服务。最核心的是一个配时服务。要如何对这个项目进行测试,保证输出质量,是最近思考和实践的重点。这篇就说下最近这个实践的过程总结。▍测试金字塔按照MikeCohn

浅析 PHP-FPM、CGI、Fast CGI 的关系

作为一个phper,一直会接触到php、nignx等的相关配置,相关的名词比如PHP-FPM、CGI、FastCGI、SAPI等等应该都或多或少接触过,但自己对于这些知识点的掌握其实相对比较分散且形成

Elasticsearch 与传统关系型数据库的对比、倒排索引原理解析

Elasticsearch和传统关系型数据库的对比Elasticsearch中的概念与关系型数据库对比 RelationalDB Databases Tables Rows Columns 关系

IDC发布:4Q18云IT基础设施收入低于传统IT基础设施收入

根据IDC全球云IT基础设施季度跟踪报告,在2018年第四季度(4Q18),包括公有和私有云在内的云IT基础设施产品(服务器、企业存储和以太网交换机)销售收入同比增长28.0%,达到168亿美元。20

一步步教你如何在 Django REST API 中构建使用 JWT 验证

基于令牌的身份验证,允许后端服务与前端(无论是web端,原生移动端或其他端)分离,并驻留在不同域中。JSONWebTokens(JWT)是一种流行的令牌认证实现,在本文中,我们使用它来验证,通过Dj

女神说不能每张照片P的一样,所以朋友圈开三天可见,用Python一步解决

大家好,我是小三十三,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来

使用kubei一步部署k8s高可用集群(包含docker安装、k8s组件安装、master初始化和加入nodes节点)

kubei(kubernetesinstaller)是一个go开发的用来部署kubernetes高可用集群的命令行工具,该工具可在Windows、Linux、Mac中运行kubei原理:通过ssh连接

PHP 开发工程师基础篇 (PHP 数组)

PHP开发工程师基础篇-PHP数组 数组(Array) 数组是PHP中最重要的数据类型,可以说是掌握数组,基本上PHP一大半问题都可以解决.PHP数组与其他编程语言数组概念不一样.其他编程语言数组是由

PHP 开发工程师基础篇 - PHP 字符串

PHP开发工程师基础篇-PHP字符串字符串(String)字符串是一系列字符的集合.如"abc".在PHP中,一个字符代表一个字节,一个字节(Byte)有8比特(bit).PHP仅支持256字符集,因

Go编程语言教程_2.1. Golang中的关键字

关键字或保留字是用于某些内部过程或表示某些预定义动作的语言中的字。因此,不允许将这些单词用作标识符。这样做会导致编译时错误。 例: //Go程序说明 //使用关键字 packagemain impor

Linux/Unix 基础:什么是 Linux?

简单来讲,Linux是一个操作系统(OS)。我们都很熟悉其他操作系统,就像Microsoftwindows,AppleMacOS,iOS,Googleandroid,等等这些,linux就像它们一样,

Linux/Unix 基础:Linux 的历史

Linux的诞生 在1991年,来自芬兰Helsinki大学的学生LinusTorvalds认为市场上应该有一个比较统一的Unix版本,从此他就开始为这个项目奋斗。后来这个项目就成为了Linux操作系

基础加强Junit、反射、注解

Junit单元测试 测试分类: 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 白盒测试:需要写代码的。关注程序具体的执行流程。 Junit使用:白盒测试 步骤: 定

Testin用iTestin开启下一代测试,测试行业为什么要“重新来过”?

测试,其实并不是一个新话题。从有软件开发开始,就有测试,最早的测试就是找Bug。后来,自动化测试、云测试、众包测试的模式开始成为流行趋势,今天又迎来以智能化为核心的下一代测试。但是,“测试”从简单的软

如何基于 Kafka 构建一个关系型数据库

在这篇文章里,我将分享如何通过扩展KCache(https://github.com/rayokota/kcache)来实现一个全功能的关系型数据库,我把这个数据库叫作KarelDB(https://

架构修炼之道 | 一个传统网关系统有几种 “死” 法

本文节选自《架构修炼之道》,作者京东王新栋。图| meghan-holmes-779221-unsplash这里说的传统,是按照网关技术演进的阶段划分的,从同步到半同步,再到全异步,我们将同步和半同步

从关系型数据库到分布式机器学习,揭秘腾讯大数据十年发展历程

大数据技术在过去10多年中极大改变了企业对数据的存储、处理和分析方式。如今,大数据技术逐渐成熟,涵盖了计算、存储、数仓、数据集成、可视化、NOSQL、OLAP分析、机器学习等丰富领域。在未来,大数据技

谷歌限制华为使用安卓服务!任正非首次回应美国禁令:半导体不卖给我们也没关系

大数据文摘编辑部出品5月19日,路透社援引单一匿名信源报道称,Google已经停止与华为之间除了开源以外的一切业务。也就是说,谷歌公司已经暂停了与华为公司的商业往来。据路透社报道:“华为只能使用安卓系

微服务?数据库?它们之间到底是啥关系?

过去几年来,“微服务架构”这个术语持续火热,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,网点智能以及语言和数据的分散控制

对话OceanBase资深总监韩鸿源:数据库是技术能力,云是使用方式,两者不应是竞争关系

5月10日,在第十届中国数据库技术大会(DTCC2019)上,蚂蚁金服的金融级分布式关系数据库OceanBase2.0,在经过200名数据库领域三年以上的从业者投票和专业评委的评选下,高分荣获了“年度