[Day 15] 针对网页的单元测试(一)

我们之前做的单元测试,
比较接近针对API的测试,
那我们现在要开始针对网页来做测试,
我们首先针对首页来做单元测试,
我们先看一下我们的首页
https://ithelp.ithome.com.tw/upload/images/20210916/20105694KOIRlIzTLw.png

然後我们写了一个单元测试在MyFirstUnitTest.php

public function test_first_page_laravel()
{
    $this->visit('/')
    ->see('Laravel')
    ->dontSee('Rails');
}

这个意思是说我们预期首页应该会有Laravel这个字,
然後不应该会有Rails这个字

那我们来执行看看
php vendor/phpunit/phpunit/phpunit tests/Feature/MyFirstUnitTest.php
https://ithelp.ithome.com.tw/upload/images/20210916/20105694AjK4c28xDL.png

怎麽会这样呢?
跟说好的不一样啊!

当我们遇到问题的时候,
首先就是先去找谷哥聊天,
然後他就跟我说(参见:Upgrade Guide)
这种方法只用到Laravel 5.3而已,
要改用browser-kit-testing,
所以我们就安装了这个套件
composer require --dev laravel/browser-kit-testing
https://ithelp.ithome.com.tw/upload/images/20210916/20105694S4MGMQz8wT.png

然後在 composer.json 档案里面,
autoload-dev 标签底下新增 psr-4

"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
   }
}

然後在tests资料夹底下新增一个BrowserKitTestCase.php

<?php

namespace Tests;

use Illuminate\Contracts\Console\Kernel;
use Laravel\BrowserKitTesting\TestCase as BaseTestCase;

abstract class BrowserKitTestCase extends BaseTestCase
{
    /**
     * The base URL of the application.
     *
     * @var string
     */
    public $baseUrl = 'http://localhost';

    /**
     * Creates the application.
     *
     * @return \Illuminate\Foundation\Application
     */
    public function createApplication()
    {
        $app = require __DIR__.'/../bootstrap/app.php';

        $app->make(Kernel::class)->bootstrap();

        return $app;
    }
}

然後我发现BrowserKitTestCase没办法是用我们之前测试的Case,
所以针对网页的测试我们就另外加一个测试类别
php artisan make:test BrowserUnitTest
https://ithelp.ithome.com.tw/upload/images/20210916/20105694sqxKKl6anV.png

然後我们的BrowserUnitTest.php继承BrowserKitTestCase.php

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\BrowserKitTestCase;

class BrowserUnitTest extends BrowserKitTestCase
{
    public function test_first_page_laravel()
    {
        $this->visit('/')
            ->see('Laravel')
            ->dontSee('Rails');
    }
}

再执行一次测试
php vendor/phpunit/phpunit/phpunit tests/Feature/BrowserUnitTest.php
https://ithelp.ithome.com.tw/upload/images/20210916/2010569440lffpnzIk.png

终於通过测试了!


<<:  [Day16] 再也不用靠线上工具! 用Python把图片转成ASCII文字图!

>>:  无线上网:Wi-Fi, 3G, 4G 及 5G 都是些是什麽?

Day1 Let's ODOO: 前言

前言 因工作需求碰到ODOO这套ERP,藉由铁人赛纪录所学与遇到的问题,若有错误也欢迎不吝指出。 O...

[Day18] Unreal Webcam Fun

[Day18] Unreal Webcam Fun 需要用到的技巧与练习目标 MediaDevice...

还原 SQL Server 资料库常见的问题 - 心得分享

DBABootcamp 在处理资料库还原的时候,常常会出现 (the database is in ...

margin & padding - 金鱼都能懂的CSS必学属性

margin 与 padding 这两个属性应该是所有新手必学的两大属性,也是网页入门必备的一项常识...

Linkedin Java 检定题目分享

前言 在更新Linkedkin 个人档案的时候 偶然发现他有技术检定测验 如果总成绩在前30%,会发...