成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel 測(cè)試: PHPUnit 入門教程

張憲坤 / 639人閱讀

摘要:介紹是最古老和最著名的單元測(cè)試包之一。它主要用于單元測(cè)試,這意味著可以用盡可能小的組件測(cè)試代碼,但是它也非常靈活,可以用于很多不僅僅是單元測(cè)試。這時(shí),的測(cè)試助手可以使這些測(cè)試像單元測(cè)試簡(jiǎn)單組件一樣容易。新的測(cè)試代碼如下注意到,在我們新建的

介紹 PHPUnit 測(cè)試的基礎(chǔ)知識(shí),使用基本的 PHPUnit 斷言和 Laravel 測(cè)試助手。
介紹

PHPUnit?是最古老和最著名的 PHP 單元測(cè)試包之一。它主要用于單元測(cè)試,這意味著可以用盡可能小的組件測(cè)試代碼,但是它也非常靈活,可以用于很多不僅僅是單元測(cè)試。

PHPUnit 包含許多簡(jiǎn)單和靈活的斷言允許您輕松地測(cè)試代碼,當(dāng)您測(cè)試特定的組件時(shí),這些斷言非常有效。但是,它確實(shí)意味著測(cè)試更高級(jí)的代碼(如控制器和表單提交驗(yàn)證)可能會(huì)復(fù)雜得多。

為了幫助開發(fā)人員更容易地進(jìn)行開發(fā), Laravel 框架 ?包含了一系列 應(yīng)用程序測(cè)試幫助程序 ,允許您編寫非常簡(jiǎn)單的 PHPUnit 測(cè)試來測(cè)試應(yīng)用程序的復(fù)雜部分。

本教程的目的是向您介紹 PHPUnit 測(cè)試的基礎(chǔ)知識(shí),使用默認(rèn) PHPUnit 斷言和 Laravel 測(cè)試助手。這樣做的目的是在本教程結(jié)束時(shí),您可以自信地為應(yīng)用程序編寫基本測(cè)試。

前提

本教程假設(shè)您已經(jīng)熟悉 Laravel 并知道如何在應(yīng)用程序目錄中運(yùn)行命令(例如?php artisan?命令)。我們將創(chuàng)建幾個(gè)基本的示例類來學(xué)習(xí)不同的測(cè)試工具如何工作,因此建議您為本教程創(chuàng)建一個(gè)新的應(yīng)用程序。

如果已經(jīng)安裝了 Laravel ,則可以通過運(yùn)行以下命令創(chuàng)建新的測(cè)試應(yīng)用程序:

laravel new phpunit-tests

或者,您可以直接使用?Composer?創(chuàng)建新應(yīng)用程序:

composer create-project laravel/laravel --prefer-dist

其他安裝方法也可以在?Laravel 文檔中找到。

創(chuàng)建一個(gè)新的測(cè)試

使用 PHPUnit 的第一步是創(chuàng)建一個(gè)新的測(cè)試類。測(cè)試類的約定是它們存儲(chǔ)在應(yīng)用程序目錄的?./tests/?下。在這個(gè)文件夾中,每個(gè)測(cè)試類都被命名為?Test.php 。這種格式允許 PHPUnit 查找每個(gè)測(cè)試類---它將忽略任何不以?Test.php 結(jié)尾的文件。

在新的 Laravel 應(yīng)用程序中,你會(huì)注意到?./tests/?目錄中有兩個(gè)文件: ?ExampleTest.php?和?TestCase.php. ?TestCase.php?文件是一個(gè)引導(dǎo)文件用于在我們的測(cè)試中設(shè)置 Laravel 環(huán)境。這允許我們?cè)跍y(cè)試中使用 Laravel Facades 并為測(cè)試助手提供框架,我們將在稍后介紹。?ExampleTest.php?是一個(gè)示例測(cè)試類,其中包含使用應(yīng)用程序測(cè)試助手的基本測(cè)試用例-暫時(shí)忽略它。

要?jiǎng)?chuàng)建一個(gè)新的測(cè)試類,我們可以手動(dòng)創(chuàng)建一個(gè)新文件,或者運(yùn)行由 Laravel 提供的 Artisan 命令?make:test?

為了創(chuàng)建一個(gè)名為?BasicTest 的測(cè)試類,我們只需要運(yùn)行這個(gè) artisan 命令:

php artisan make:test BasicTest

Laravel 將創(chuàng)建一個(gè)如下所示的基本測(cè)試類:

assertTrue(true);
    }
}

這里要注意的最重要的事情是?test?方法名稱上的前綴,與?Test 類名后綴一樣,這樣?test?前綴告訴 PHPUnit 在測(cè)試時(shí)運(yùn)行哪些方法。如果您忘記了?test?前綴,那么 PHPUnit 將忽略該方法。

在我們第一次運(yùn)行測(cè)試套件之前,有必要指出 Laravel 提供的默認(rèn)?phpunit.xml 文件。 PHPUnit 在運(yùn)行時(shí)會(huì)自動(dòng)在當(dāng)前目錄中查找名為 phpunit.xml?或者?phpunit.xml.dist?的文件。您可以在此處配置測(cè)試的特定選項(xiàng)。

這個(gè)文件中有很多信息,但是現(xiàn)在最重要的部分是在?testsuite?目錄定義:




    
        
            ./tests/
        
    

    ...

這將告訴 PHPUnit 運(yùn)行時(shí)在?./tests/?目錄中找到的測(cè)試,正如我們之前所知,這是存儲(chǔ)測(cè)試的約定。

現(xiàn)在我們已經(jīng)創(chuàng)建了一個(gè)基本測(cè)試,并且知道了 PHPUnit 配置,現(xiàn)在是第一次運(yùn)行測(cè)試的時(shí)候了。

您可以通過運(yùn)行以下?phpunit?命令來運(yùn)行測(cè)試:

./vendor/bin/phpunit

您應(yīng)該看到與此類似的輸出:

PHPUnit 4.8.19 by Sebastian Bergmann and contributors.

..

Time: 103 ms, Memory: 12.75Mb

OK (2 tests, 3 assertions)

現(xiàn)在我們已經(jīng)有了一個(gè)有效的 PHPUnit 設(shè)置,現(xiàn)在是時(shí)候開始編寫一個(gè)基本測(cè)試了。

注意,它會(huì)統(tǒng)計(jì)2個(gè)測(cè)試和3個(gè)斷言,因?yàn)?ExampleTest.php?文件包含了一個(gè)帶有兩個(gè)斷言的測(cè)試。我們的新基本測(cè)試包括一個(gè)多帶帶的斷言,該斷言已通過。

寫一個(gè)基礎(chǔ)測(cè)試

為了幫助 PHPUnit 提供的基本斷言,我們將首先創(chuàng)建一個(gè)提供一些簡(jiǎn)單功能的基本類

在?./app/?目錄中創(chuàng)建一個(gè)名為?Box.php 的新文件,并復(fù)制此示例類:

items = $items;
    }

    /**
    * 檢查指定的項(xiàng)目是否在框中。
    *
    * @param string $item
    * @return bool
    */
    public function has($item)
    {
        return in_array($item, $this->items);
    }

    /**
    * 從框中移除項(xiàng),如果框?yàn)榭?,則為 null 。
    *
    * @return string
    */
    public function takeOne()
    {
        return array_shift($this->items);
    }

    /**
    * 從包含指定字母開頭的框中檢索所有項(xiàng)目。
    *
    * @param string $letter
    * @return array
    */
    public function startsWith($letter)
    {
        return array_filter($this->items, function ($item) use ($letter) {
            return stripos($item, $letter) === 0;
        });
    }
}

接下來, 打開你的?./tests/BasicTest.php?類(我們之前創(chuàng)建的類),并刪除默認(rèn)創(chuàng)建的?testExample?方法, 你應(yīng)該留一個(gè)空類。

我們現(xiàn)在將使用七個(gè)基本的 PHPUnit 斷言來為我們的?Box?類編寫測(cè)試。這些斷言是:

assertTrue()

assertFalse()

assertEquals()

assertNull()

assertContains()

assertCount()

assertEmpty()

assertTrue() 和 assertFalse()

assertTrue()?和?assertFalse()?允許你聲明一個(gè)值等于 true 或 false 。這意味著它們非常適合測(cè)試返回布爾值的方法。在我們的?Box 類中,我們有一個(gè)名為?has($item) 的方法,當(dāng)指定的項(xiàng)在 box 中或不在 box 中時(shí),該方法返回對(duì)應(yīng)返回 true 或 false .

要在 PHPUnit 中為此編寫測(cè)試,我們可以執(zhí)行以下操作:

assertTrue($box->has("toy"));
        $this->assertFalse($box->has("ball"));
    }
}

注意我們?nèi)绾沃粚⒁粋€(gè)參數(shù)傳遞給?assertTrue()?和?assertFalse()?方法,并且它是?has($item)?方法的輸入.

如果您現(xiàn)在運(yùn)行?./vendor/bin/phpunit?命令,您會(huì)注意到輸出包括:

OK (2 tests, 4 assertions)

這意味著我們的測(cè)試已經(jīng)通過。

如果您將?assertFalse()?替換成?assertTrue()?并運(yùn)行?phpunit?命令,輸出將如下所示:

PHPUnit 4.8.19 by Sebastian Bergmann and contributors.

F.

Time: 93 ms, Memory: 13.00Mb

There was 1 failure:

1) BasicTest::testHasItemInBox
Failed asserting that false is true.

./tests/BasicTest.php:12

FAILURES!
Tests: 2, Assertions: 4, Failures: 1.

這告訴我們第12行的斷言未能斷言?false?值是?true?- 因?yàn)槲覀儗?assertFalse()?替換為?assertTrue()

將其交換回來,然后重新運(yùn)行 PHPUnit 。測(cè)試應(yīng)該再次通過,因?yàn)槲覀円呀?jīng)修復(fù)了破損的測(cè)試。

assertEquals() 與 assertNull()

接下來,讓我們看看?assertEquals(), 以及?assertNull()

assertEquals() 用于比較變量實(shí)際值與預(yù)期值是否相等。我們用它來檢查 takeOne() 方法的返回值是否為 Box 內(nèi)的當(dāng)前值。當(dāng) Box 為空時(shí),takeOne() 將返回 null,我們亦可使用 assertNull() 來進(jìn)行檢查。

與?assertTrue()assertFalse() 以及?assertNull() 不同,assertEquals()?需要兩個(gè)參數(shù)。第一個(gè)參數(shù)為 預(yù)期 值,第二個(gè)參數(shù)則為 實(shí)際 值。

可參照如下代碼實(shí)現(xiàn)以上斷言(assertions):

assertTrue($box->has("toy"));
        $this->assertFalse($box->has("ball"));
    }

    public function testTakeOneFromTheBox()
    {
        $box = new Box(["torch"]);

        $this->assertEquals("torch", $box->takeOne());

        // 當(dāng)前 Box 為空,應(yīng)當(dāng)為 Null
        $this->assertNull($box->takeOne());
    }
}

運(yùn)行?phpunit?命令,你應(yīng)當(dāng)看到如下輸出:

OK (3 tests, 6 assertions)
assertContains() 和 assertCount() 以及 assertEmpty()

終于,我們有三個(gè)作用于數(shù)組有關(guān)的斷言,我們能夠使用它們?nèi)z查?Box?類中的 ?startsWith($item) 方法。?assertContains()?斷言傳遞進(jìn)來的數(shù)組中包含指定值,?assertCount()?斷言數(shù)組的項(xiàng)數(shù)為指定數(shù)量,assertEmpty() 斷言傳遞進(jìn)來的數(shù)組為空。

讓我們來執(zhí)行以下測(cè)試:

assertTrue($box->has("toy"));
        $this->assertFalse($box->has("ball"));
    }

    public function testTakeOneFromTheBox()
    {
        $box = new Box(["torch"]);

        $this->assertEquals("torch", $box->takeOne());

        // Null,現(xiàn)在這個(gè) box 是空的。
        $this->assertNull($box->takeOne());
    }

    public function testStartsWithALetter()
    {
        $box = new Box(["toy", "torch", "ball", "cat", "tissue"]);

        $results = $box->startsWith("t");

        $this->assertCount(3, $results);
        $this->assertContains("toy", $results);
        $this->assertContains("torch", $results);
        $this->assertContains("tissue", $results);

        // 如果傳遞復(fù)數(shù)斷言數(shù)組為空
        $this->assertEmpty($box->startsWith("s"));
    }
}

保存并再一次運(yùn)行你的測(cè)試:

OK (4 tests, 9 assertions)

恭喜你,你剛剛使用七個(gè)基礎(chǔ)的 PHPUnit 斷言完成了對(duì) Box 類的全部測(cè)試。通過這些簡(jiǎn)單的斷言你能夠做許多事,對(duì)于其他斷言,大多數(shù)要更復(fù)雜,不過它們?nèi)宰裱陨鲜褂靡?guī)則。

測(cè)試你的程序

在你的程序里,對(duì)每個(gè)組件進(jìn)行單元測(cè)試在很多情況下都是有必要的,而且也應(yīng)該成為你開發(fā)過程中必不可少的一部分,但這并不是你需要做的全部的測(cè)試。當(dāng)你構(gòu)建一個(gè)包含復(fù)雜視圖、導(dǎo)航和表單的程序時(shí),你同樣想測(cè)試這些組件。這時(shí),Laravel的測(cè)試助手可以使這些測(cè)試像單元測(cè)試簡(jiǎn)單組件一樣容易。

我們之前查看在?./tests/?目錄下的默認(rèn)文件時(shí)跳過了 ./tests/ExampleTest.php?文件。 現(xiàn)在打開它,內(nèi)容如下所示:

visit("/")
             ->see("Laravel 5");
    }
}

我們可以看到這個(gè)測(cè)試示例非常簡(jiǎn)單。在不知道測(cè)試助手如何運(yùn)作的情況下,我們可以猜測(cè)它的意思如下:

當(dāng)我訪問/?(根目錄)

我應(yīng)該看到 "Laravel 5"

如果你打開你的web瀏覽器,訪問我們的程序(如果你沒有啟動(dòng)你的web服務(wù)器,你可以運(yùn)行?php artisan serve?),你應(yīng)該可以在web根目錄上看到屏幕上有“Laravel 5”的文本。 鑒于這個(gè)測(cè)試已經(jīng)通過了PHPUnit,我們可以很確定地說我們對(duì)這個(gè)測(cè)試示例改造是正確的。

這個(gè)測(cè)試確保了訪問/路徑,網(wǎng)頁可以返回“"Laravel 5”的文本。一個(gè)如此簡(jiǎn)單的檢查也許不代表什么,但如果你的網(wǎng)站上要顯示關(guān)鍵信息,它就可以在一個(gè)別處的改動(dòng)導(dǎo)致這個(gè)頁面無法正常顯示正確的信息時(shí),防止你部署一個(gè)被損壞的程序。

visit()、see() 以及 dontSee()

現(xiàn)在嘗試編寫自己的測(cè)試,更進(jìn)一步理解它吧。

首先,編輯?./app/Http/routes.php?,增加一個(gè)新的路由。為了教程目的,我們創(chuàng)建希臘字母定義的路由:


然后,創(chuàng)建視圖文件?./resources/views/alpha.blade.php,使用 Alpha 作為關(guān)鍵字,保存基本的HTML文件:



    
        Alpha
    
    
        

This is the Alpha page.

打開瀏覽器,輸入網(wǎng)址:?http://localhost:8000/beta,頁面會(huì)顯示出 "This is the Alpha page." 的內(nèi)容。

現(xiàn)在我們有了測(cè)試用到的模版文件,下一步,我們通過運(yùn)行命令?make:test?來創(chuàng)建一個(gè)新的測(cè)試文件:

php artisan make:test AlphaTest

然后變成剛創(chuàng)建好的測(cè)試文件,按照框架提供的例子,測(cè)試 "alpha" 頁面上沒有包含 "beta" 。 我們可以使用方法?dontSee()?,它是?see() 的對(duì)應(yīng)的反向方法。

下面代碼是上面實(shí)現(xiàn)的簡(jiǎn)單例子:

visit("/alpha")
             ->see("Alpha")
             ->dontSee("Beta");
    }
}

保存并運(yùn)行 PHPUnit (./vendor/bin/phpunit),測(cè)試代碼應(yīng)該會(huì)全部通過,你會(huì)看到像這樣的測(cè)試狀態(tài)內(nèi)容顯示:

OK (5 tests,12 assertions)
開發(fā)前先寫測(cè)試

對(duì)于測(cè)試來說,測(cè)試驅(qū)動(dòng)開發(fā)?(TDD) 是非??岬姆椒ǎ紫任覀兿葘憸y(cè)試。寫完測(cè)試并執(zhí)行它們,你會(huì)發(fā)現(xiàn)測(cè)試沒通過,接下來?我們編寫滿足測(cè)試的代碼,再次執(zhí)行測(cè)試,使測(cè)試通過。 接下來讓我們開始。

首先,建立一個(gè)?BetaTest?類使用?make:test?artisan 命令:

php artisan make:test BetaTest

接下來,更新測(cè)試用例以便檢查?/beta?的路由 route 為「Beta」:

visit("/beta")
             ->see("Beta")
             ->dontSee("Alpha");
    }
}

現(xiàn)在使用?./vendor/bin/phpunit 命令來執(zhí)行測(cè)試。結(jié)果是一個(gè)看起來簡(jiǎn)潔但不好的錯(cuò)誤信息,如下:

> ./vendor/bin/phpunit
PHPUnit 4.8.19 by Sebastian Bergmann and contributors.

....F.

Time: 144 ms, Memory: 14.25Mb

There was 1 failure:

1) BetaTest::testDisplaysBeta
一個(gè)對(duì) [http://localhost/beta] 的請(qǐng)求失敗了。收到狀態(tài)碼 [404]。

...

FAILURES!
Tests: 6, Assertions: 13, Failures: 1.

我們現(xiàn)在需要?jiǎng)?chuàng)建這個(gè)不存在的路由。讓我們開始。

首先,編輯?./app/Http/routes.php?文件來創(chuàng)建新的 /beta?路由:


接下來,在 ./resources/views/beta.blade.php 下創(chuàng)建如下視圖模版:



    
        Beta
    
    
        

This is the Beta page.

現(xiàn)在再一次執(zhí)行 PHPUnit,結(jié)果應(yīng)該再一次回到綠色。

> ./vendor/bin/phpunit
PHPUnit 4.8.19 by Sebastian Bergmann and contributors.

......

Time: 142 ms, Memory: 14.00Mb

OK (6 tests, 15 assertions)

這樣我們就通過在完成新的頁面之前寫測(cè)試的方式,對(duì) 測(cè)試驅(qū)動(dòng)開發(fā) 進(jìn)行了實(shí)踐。

click() 和 seePageIs()

Laravel 也提供一個(gè)輔助函數(shù) (click()) 允許測(cè)試點(diǎn)擊頁面中存在的連接 ,以及一個(gè)方法 (seePageIs()) 檢查點(diǎn)擊展示的結(jié)果頁面。

讓我們使用這兩個(gè)輔助函數(shù)去執(zhí)行在 Alpha 和 Beta 頁面的鏈接。

首先,我們更新我們的測(cè)試。打開?AlphaTest?類,我們將添加一個(gè)新的測(cè)試方法,這將點(diǎn)擊 「alpha」頁面上的「Next」鏈接跳轉(zhuǎn)到 「beta」頁面。

新的測(cè)試代碼如下:

visit("/alpha")
             ->see("Alpha")
             ->dontSee("Beta");
    }

    public function testClickNextForBeta()
    {
        $this->visit("/alpha")
             ->click("Next")
             ->seePageIs("/beta");
    }
}

注意到,在我們新建的 testClickNextForBeta() 方法中,我們并沒有檢查每一個(gè)頁面的內(nèi)容。 其他測(cè)試都成功的檢查了兩個(gè)頁面的內(nèi)容,所以這里我們只關(guān)心點(diǎn)擊 「Next」鏈接將發(fā)送到?/beta

你現(xiàn)在可以運(yùn)行測(cè)試組件了,但就像預(yù)料的一樣測(cè)試將不通過,因?yàn)槲覀冞€沒有更新我們的 HTML。

接下來,我們將更新?BetaTest?來做類似的事情:

visit("/beta")
             ->see("Beta")
             ->dontSee("Alpha");
    }

    public function testClickNextForAlpha()
    {
        $this->visit("/beta")
             ->click("Previous")
             ->seePageIs("/alpha");
    }
}

接下來,我們更新我們的 HTML 模版。

./resources/views/alpha.blade.php



    
        Alpha
    
    
        

This is the Alpha page.

Next

./resources/views/beta.blade.php



    
        Beta
    
    
        

This is the Beta page.

Previous

保存文件,再一次執(zhí)行 PHPUnit:

> ./vendor/bin/phpunit
PHPUnit 4.8.19 by Sebastian Bergmann and contributors.

F....F..

Time: 175 ms, Memory: 14.00Mb

There were 2 failures:

1) AlphaTest::testDisplaysAlpha
Failed asserting that "

    
        Alpha
    
    
        

This is the Alpha page.

Next

" does not match PCRE pattern "/Beta/i". 2) BetaTest::testDisplaysBeta Failed asserting that " Beta

This is the Beta page.

Previous

" does not match PCRE pattern "/Alpha/i". FAILURES! Tests: 8, Assertions: 23, Failures: 2.

然而測(cè)試失敗了。如果你仔細(xì)觀察我們的新 HTML,你將注意到我們分別有術(shù)語?beta?和?alpha?在?/alpha?和?/beta?頁面。這意味著我們需要稍微更改我們的測(cè)試讓它們與誤報(bào)不匹配。

在每一個(gè)?AlphaTest?和?BetaTest?類,更新?testDisplays* 方法去使用?dontSee(" page")。通過這種方式,這將僅僅匹配字符串而不是那個(gè)術(shù)語。

兩個(gè)測(cè)試文件如下所示:

./tests/AlphaTest.php

visit("/alpha")
             ->see("Alpha")
             ->dontSee("Beta page");
    }

    public function testClickNextForBeta()
    {
        $this->visit("/alpha")
             ->click("Next")
             ->seePageIs("/beta");
    }
}

./tests/BetaTest.php

visit("/beta")
             ->see("Beta")
             ->dontSee("Alpha page");
    }

    public function testClickNextForAlpha()
    {
        $this->visit("/beta")
             ->click("Previous")
             ->seePageIs("/alpha");
    }
}

再一次運(yùn)行你的測(cè)試,所有的測(cè)試都應(yīng)該通過了。我們現(xiàn)在已經(jīng)測(cè)試我們所有的新文件,包括頁面中的 Next/Previous 鏈接。

通過 Semaphore 對(duì) PHPUnit 持續(xù)集成

通過 Semaphore設(shè)置?持續(xù)集成你可以自動(dòng)執(zhí)行你的測(cè)試。

這樣每一次你進(jìn)行?git push?提交代碼的時(shí)候都會(huì)執(zhí)行你的測(cè)試,并且 Semaphore 預(yù)裝了所有最新的 PHP 版本。

如果你還沒有一個(gè) Semaphore 賬戶, 先去 注冊(cè)一個(gè)免費(fèi)的 Semaphore 賬戶?。接下來需要做的是將它?添加到你的項(xiàng)目,并按照提示逐步去做來執(zhí)行你的測(cè)試:

composer install --prefer-source
phpunit

關(guān)于?PHP 持續(xù)集成 的更多信息,請(qǐng)參照 Semaphore 文檔。

結(jié)語

你應(yīng)該注意到本教程中的所有測(cè)試都有一個(gè)共同的主題:它們都非常簡(jiǎn)單。 這是學(xué)習(xí)如何使用基本的測(cè)試斷言和輔助函數(shù),并且盡可能的使用它們的好處之一。編寫測(cè)試越簡(jiǎn)單,測(cè)試就越容易理解和維護(hù)。

掌握了本教程中介紹的 PHPUnit 斷言之后,你還可以去 PHPUnit 文檔 找到更多內(nèi)容。 所有的斷言都遵循基本的模式,但你會(huì)發(fā)現(xiàn),在大多數(shù)測(cè)試中都會(huì)返回基本的斷言。

對(duì)于 PHPUnit 斷言來說,Laravel 的測(cè)試輔助函數(shù)是極好的補(bǔ)充,這讓應(yīng)用程序的測(cè)試變的非常容易。也就是說,重要的是要認(rèn)識(shí)到,對(duì)于我們寫測(cè)試,我們只檢查關(guān)鍵信息,而不是整個(gè)頁面。這使得測(cè)試變得簡(jiǎn)單,并允許頁面內(nèi)容隨著應(yīng)用程序的變化而變化。如果關(guān)鍵信息仍然存在,測(cè)試仍然通過,每個(gè)人都會(huì)滿意。

文章轉(zhuǎn)自: https://learnku.com/laravel/t... 

更多文章:https://learnku.com/laravel/c...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30920.html

相關(guān)文章

  • 無頭瀏覽器測(cè)試可視化:Laravel Dusk 控制臺(tái)入門指南

    摘要:通過添加此功能,該程序包將啟用記錄請(qǐng)求和響應(yīng)信息所需的功能。是一條普通控制器路由,用于輸出控制臺(tái)的視圖。收集瀏覽器行為這是整個(gè)擴(kuò)展包最乏味的部分。 Laravel Dusk 控制臺(tái)是一款 Laravel 擴(kuò)展包,能夠?yàn)槟愕?Dusk 測(cè)試套件提供漂亮的可視面板。通過它,你可以可視化運(yùn)行 Dusk 測(cè)試時(shí)涉及的各個(gè)步驟,以及查看每個(gè)步驟的 DOM 快照。這對(duì)于調(diào)試瀏覽器測(cè)試、并搞清楚后臺(tái)...

    levius 評(píng)論0 收藏0
  • 8 個(gè) PHP 的軟件質(zhì)量控制工具推薦(包含 QA 工具和測(cè)試工具)

    摘要:然而,市面上的測(cè)試工具范圍太廣了,很難做出選擇。這篇熱門文章將會(huì)選出最受歡迎的測(cè)試工具并且它已經(jīng)被更新過以便反映出年的工具狀態(tài)。是一個(gè)根據(jù)規(guī)范創(chuàng)建的驗(yàn)收測(cè)試框架。 為了傳播有質(zhì)量的代碼, 我們必須在編碼時(shí)有測(cè)試的觀念 (如果不是在做 TDD)。 然而,市面上的PHP測(cè)試工具范圍太廣了,很難做出選擇。 這篇熱門文章將會(huì)選出最受歡迎的測(cè)試工具并且它已經(jīng)被更新過以便反映出2017年的 QA...

    wenyiweb 評(píng)論0 收藏0
  • [譯] Laravel 5 之美 - 單元測(cè)試

    摘要:事實(shí)上,這是討論測(cè)試的惟一一章。因此,在中沒有單一的測(cè)試方法。包含了這是的標(biāo)準(zhǔn)強(qiáng)調(diào)業(yè)務(wù)或特性測(cè)試是最流行的框架。然后我們?cè)谶@個(gè)項(xiàng)目中使用進(jìn)行單元測(cè)試。在隨后的章節(jié)中,將不再進(jìn)行測(cè)試。 原文地址: Laravel 5.1 Beauty - Testing Note 本系列第四節(jié)內(nèi)容. 本章會(huì)創(chuàng)建一個(gè)以后可以用到的項(xiàng)目便于以后我們的課程使用, 同時(shí)也會(huì)查課各種測(cè)試選項(xiàng). 以后一段時(shí)間內(nèi)會(huì)開...

    fuyi501 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記之PHP反射(Reflection) (上)

    摘要:說明中經(jīng)常使用的反射特性來設(shè)計(jì)代碼,本文主要學(xué)習(xí)的反射特性,來提高寫代碼時(shí)的設(shè)計(jì)質(zhì)量。提供一套檢測(cè)的兩個(gè)工具包和,類似于探針一樣的東西來探測(cè)這些一等公民。限于篇幅,下篇再聊下反射。 說明:Laravel中經(jīng)常使用PHP的反射特性來設(shè)計(jì)代碼,本文主要學(xué)習(xí)PHP的反射特性,來提高寫代碼時(shí)的設(shè)計(jì)質(zhì)量。PHP提供一套檢測(cè)class, interface, trait, property, me...

    JessYanCoding 評(píng)論0 收藏0
  • 掌握 Laravel測(cè)試方法

    摘要:同時(shí)支持單元測(cè)試和功能測(cè)試兩種特性。我們會(huì)簡(jiǎn)單介紹單元測(cè)試和功能測(cè)試的基本使用方法。單元測(cè)試的目的是用于測(cè)試函數(shù)或方法的正確性。單元測(cè)試是為了保證每個(gè)獨(dú)立單元的代碼正確性功能測(cè)試則是為了保證一個(gè)功能的正確性。單元測(cè)試用例文件被創(chuàng)建在目錄內(nèi)。 本文首發(fā)于個(gè)人博客 掌握 Laravel 的測(cè)試方法,轉(zhuǎn)載請(qǐng)注明出處。 不管你承認(rèn)與否在研發(fā)一款產(chǎn)品時(shí),軟件測(cè)試對(duì)項(xiàng)目而言意義重大,但現(xiàn)實(shí)是測(cè)試通...

    MRZYD 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<