快速入門
快速入門
測(cè)試:入門指南
介紹
Laravel 天生就具有測(cè)試的基因。事實(shí)上,Laravel 默認(rèn)就支持用 PHPUnit 來(lái)做測(cè)試,并為你的應(yīng)用程序配置好了 phpunit.xml 文件。框架還提供了一些便利的輔助函數(shù),讓你可以更直觀的測(cè)試你的應(yīng)用程序。
默認(rèn)情況,你的應(yīng)用 tests
目錄中包含兩個(gè)子目錄:Feature
和 Unit
。單元測(cè)試是針對(duì)你的代碼中非常少,而且相對(duì)獨(dú)立的一部分代碼來(lái)進(jìn)行的測(cè)試。實(shí)際上,大部分單元測(cè)試都是針對(duì)單個(gè)方法進(jìn)行的。功能測(cè)試是針對(duì)大面積代碼進(jìn)行的測(cè)試,包括多個(gè)對(duì)象之間的交互,甚至是對(duì) JSON 端點(diǎn)的完整 HTTP 請(qǐng)求。
Feature
和 Unit
目錄中都提供一個(gè) ExampleTest.php
測(cè)試示例文件。安裝一個(gè)新的 Laravel 應(yīng)用程序之后,在命令行下運(yùn)行 phpunit
命令,即可運(yùn)行測(cè)試。
環(huán)境
在使用 phpunit
進(jìn)行測(cè)試時(shí),Laravel 將根據(jù) phpunit.xml
文件設(shè)定的環(huán)境變量自動(dòng)將環(huán)境設(shè)置為 testing
,并將 Session 及緩存以 array
的形式存儲(chǔ),也就是說(shuō)在測(cè)試時(shí)不會(huì)持久化任何 Session 或緩存數(shù)據(jù)。
你可以隨意創(chuàng)建其它必要的測(cè)試環(huán)境配置。testing
環(huán)境變量可以在 phpunit.xml
文件中修改,但是在運(yùn)行測(cè)試之前,請(qǐng)確保使用 config:clear
Artisan 命令來(lái)清除配置信息的緩存!
此外,你還可以在你的項(xiàng)目根目錄下創(chuàng)建一個(gè) .env.testing
文件,在運(yùn)行單元測(cè)試,或者使用帶有 --env=testing
選項(xiàng)的 Artisan 命令時(shí), .env
文件中的變量會(huì)被這個(gè)文件覆蓋。
定義并運(yùn)行測(cè)試
可以使用 Artisan 命令 make:test
創(chuàng)建一個(gè)測(cè)試用例:
// 在 Feature 目錄下創(chuàng)建一個(gè)測(cè)試類...php artisan make:test UserTest// 在 Unit 目錄下創(chuàng)建一個(gè)測(cè)試類...php artisan make:test UserTest --unit
測(cè)試類生成之后,你就可以像平常使用 PHPUnit 一樣來(lái)定義測(cè)試方法。要運(yùn)行測(cè)試只需要在終端上運(yùn)行 phpunit
命令即可:
<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase{ /** * 一個(gè)基本的測(cè)試示例。 * * @return void */ public function testBasicTest() { $this->assertTrue(true); } }
{note} 如果要在你的測(cè)試類中定義自己的
setUp
/tearDown
方法,請(qǐng)確保調(diào)用了父類中的parent::setUp()
/parent::tearDown()
方法。