在使用 Laravel 框架編寫介面後,在驗收這個專案的時候,我們需要一些測試技巧來測試介面的程式碼的正確性。下面,我們將介紹如何對 Laravel 介面進行測試。
在 Laravel 中,我們可以使用 PHPUnit 來進行介面測試。 PHPUnit 是一個功能強大的 PHP 單元測試工具,它支援自動化測試、API 測試甚至是端對端測試。在 Laravel 5.5 及更高版本中,PHPUnit 已成為框架自備的測試工具,因此不需要進行額外安裝。
在 Laravel 中,我們可以使用 php artisan make:test
指令來產生測試案例檔案。這個指令會在 tests/Feature
目錄中產生一個測試類,並將這個類別繼承自 PHPUnit\Framework\TestCase
類別。測試類別的每一個方法都將自動作為一個測試案例來運行。例如:
<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { /** * A basic test example. * * @return void */ public function testBasicTest() { $response = $this->get('/'); $response->assertStatus(200); } }
在這個範例程式碼中,我們建立了一個testBasicTest
的方法,並且使用了$this->get()
方法來傳送HTTP GET 請求,然後使用$response->assertStatus()
方法來判斷回應狀態碼是否為200。
在Laravel 中,我們可以使用$this->get()
、$this->post()
、$this->put()
、$this->patch()
和$this->delete()
等方法來傳送HTTP請求。這些方法將自動執行路由和控制器方法,並傳回 HTTP 回應物件。例如,發送一個GET 請求到/users
路由,在測試類別中可以這樣寫:
public function testGetUsers() { $response = $this->get('/users'); $response->assertStatus(200); }
在Laravel 中,我們可以使用$response->assertJson()
、$response->assertStatus()
、$response->assertSeeText()
和$response-> ;assertDontSeeText()
等方法來斷言回應內容。
如果我們要判斷回應內容是否包含一段JSON 字串,可以使用$response->assertJson()
方法,如果我們要判斷回應狀態碼是否為200,可以使用$response->assertStatus(200)
方法。如果我們要判斷回應內容是否包含某個文本,可以使用 $response->assertSeeText('Hello World')
方法。如果我們要判斷回應內容是否不包含某個文本,可以使用 $response->assertDontSeeText('Hello World')
方法。
例如,測試/users
路由傳回的使用者清單應該是一個數組,我們可以這樣寫:
public function testGetUsers() { $response = $this->get('/users'); $response->assertJson([ 'users' => [], ]); }
在在 Laravel 中,我們可以使用Laravel 自帶的Auth::
Facade 來模擬認證和授權。例如,我們可以使用Auth::login()
方法來模擬登陸一個用戶,也可以使用Auth::shouldReceive()
方法來模擬驗證一個用戶是否有某個權限等。
例如,我們要測試是否需要認證存取/dashboard
路由,我們可以這樣寫:
public function testDashboardRequiresAuthentication() { $response = $this->get('/dashboard'); $response->assertRedirect('/login'); }
在Laravel 中,我們可以使用PHPUnit 來進行介面測試,使用$this->get()
、$this->post()
、$this->put()
、$this->patch()
和$this->delete()
等方法傳送HTTP 請求,使用$response->assertJson( )
、$response->assertStatus()
、$response->assertSeeText()
和$response->assertDontSeeText()
等方法來對回應內容進行斷言。也可以使用 Laravel 自帶的 Auth::
Facade 來模擬認證和授權。
以上是如何對 Laravel 介面進行測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!