快速入門


  • #建立並執行測試
  • #介紹
Laravel 天生就具有測試的基因。事實上,Laravel 預設支援用 PHPUnit 來做測試,並為你的應用程式配置了 phpunit.xml 檔案。框架還提供了一些便利的輔助函數,讓你可以更直覺的測試你的應用程式。

預設情況,你的應用程式 tests

目錄中包含兩個子目錄:
Feature

Unit

。單元測試是針對你的程式碼中非常少,而且相對獨立的一部分程式碼來進行的測試。實際上,大部分的單元測試都是針對單一方法進行。功能測試是針對大面積程式碼進行的測試,包括多個物件之間的交互,甚至是對 JSON 端點的完整 HTTP 請求。

FeatureUnit 目錄中都提供一個 ExampleTest.php 測試範例檔。安裝一個新的 Laravel 應用程式之後,在命令列下執行 phpunit

命令,即可執行測試。

環境

在使用phpunit 進行測試時,Laravel 會根據 phpunit.xml 檔案設定的環境變數自動將環境設為testing ,並將Session 及快取以array 的形式存儲,也就是說在測試時不會持久化任何Session 或快取資料。

你可以隨意創建其它必要的測試環境配置。 testing 環境變數可以在phpunit.xml 檔案中修改,但是在執行測試之前,請確保使用config:clear Artisan 指令來清除設定資訊的緩存!

此外,你還可以在你的專案根目錄下創建一個.env.testing 文件,在執行單元測試,或使用帶有--env=testing 選項的Artisan 指令時, .env 檔案中的變數會被這個檔案覆寫。

定義並執行測試

#可以使用Artisan 指令make:test 建立一個測試使用案例:

// 在 Feature 目录下创建一个测试类...php artisan make:test UserTest// 在 Unit 目录下创建一个测试类...php artisan make:test UserTest --unit

測試類別產生之後,你就可以像平常使用PHPUnit 一樣來定義測試方法。要執行測試只需要在終端機上執行phpunit 指令即可:

<?php
    namespace Tests\Unit;
    use Tests\TestCase;
    use Illuminate\Foundation\Testing\RefreshDatabase;
    class ExampleTest extends TestCase{   
     /**
     * 一个基本的测试示例。
     *
     * @return void
     */   
    public function testBasicTest()  
      {      
        $this->assertTrue(true);  
       }
    }

{note} 如果要在你的測試類別中定義自己的setUp / tearDown 方法,請確保呼叫了父類別中的parent::setUp() / parent::tearDown() 方法。

本篇首發在 LearnKu.com 網站上。