iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0

我第一天說過,我的參考用書是《Laravel: Up and Running》,這本書基本上該提的都有(這不是業配,重複,這不是業配),不過比較麻煩的是書裡使用的Laravel版本是5.3,而我是用5.5(然後Laravel最新版本是5.6)。

Laravel經過改版,有些目錄跟檔案和書中當時的情況不盡相同。5.3版的Tests目錄當時只有兩個檔案:ExampleTest.phpTestCase.php,現在的Tests目錄也還是有他們,不過多了點別的。

./tests/
├── CreatesApplication.php
├── Feature
│   └── ExampleTest.php
├── TestCase.php
└── Unit
    └── ExampleTest.php

Well,好像不算一點。

Laravel內建支援PHPUnit,PHPUnit是PHP最常見的測試框架,讓你比較簡單的測試程式。當我們寫好test檔案後,下個phpunit指令它就會自動幫你把所有測試跑完。

這是Unit裡面的Example,如果使用Artisan指令創建新Test檔案,也大概是長這樣:

<?php

namespace Tests\Unit;

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

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}

有趣的是新生成的Test會在tests/Feature資料夾而不是tests/Unit。然後這是Feature裡面的Example:

<?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);
    }
}

書裡面是測試是否拿抓取「Laravel」字樣,這邊測試的是連線。測試成功了會看到類似下圖這樣的畫面:

測試失敗就會這樣:

我知道把200改成404很蠢,不過這是範例,求別計較_(:з」∠)_

Laravel也有提供mock的工具,像是測試郵件或通知時,我們不能真的把郵件跟通知送出去,這種時候就可以使用模仿程式進行測試:)


上一篇
D14 Artisan補充章
下一篇
D16 如果你的Migrate無法使用⋯⋯
系列文
來用Laravel做點什麼吧30

尚未有邦友留言

立即登入留言