日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Laravel開發(fā):如何使用Laravel Testing進行高效的單元測試?

Laravel是PHP開發(fā)的一種領(lǐng)先框架,因其易學(xué)易用,功能完善,被廣大PHP開發(fā)者所喜歡。在開發(fā)過程中,測試是至關(guān)重要的,因為良好的測試可以提高應(yīng)用程序的質(zhì)量和穩(wěn)定性。

Laravel框架內(nèi)置了Laravel Testing工具,可以幫助開發(fā)者快速編寫高效的單元測試。本文將介紹如何使用Laravel Testing進行高效的單元測試。

為什么進行單元測試?

在開發(fā)過程中,單元測試是非常重要的環(huán)節(jié)。它們可以幫助開發(fā)者:

確保代碼質(zhì)量:測試可以捕獲代碼錯誤和問題,讓開發(fā)人員及時解決問題,并確保代碼質(zhì)量。提高代碼覆蓋率:測試可以幫助開發(fā)者提高代碼覆蓋率,以確保測試覆蓋了應(yīng)用程序的各個方面。確認(rèn)代碼行為:測試可以幫助開發(fā)者確認(rèn)代碼的行為,并確保代碼邏輯正確。

利用單元測試可以大大降低代碼開發(fā)中出現(xiàn)問題的風(fēng)險,并提升代碼的質(zhì)量和穩(wěn)定性。

使用Laravel Testing進行單元測試的好處

為了進行單元測試,開發(fā)者需要使用測試框架以確保測試用例的正常運行,并快速捕獲問題和錯誤。Laravel Testing是一個在Laravel框架中非常受歡迎的測試框架。該框架具有以下好處:

易于使用:Laravel Testing具有簡單而直觀的API接口,使得開發(fā)者可以快速編寫并執(zhí)行測試用例。Laravel框架內(nèi)置:Laravel Testing是與Laravel框架內(nèi)置的測試框架相集成的,這樣開發(fā)者可以利用其強大的功能,它使用了Laravel框架的核心方法,使得它們具有良好的互動性。應(yīng)用廣泛:Laravel是一個廣泛使用的框架,擁有廣大的用戶群體和社區(qū),這些用戶和社區(qū)提供了許多有價值的資源,如文檔和信息。

Laravel Testing的基本結(jié)構(gòu)

在編寫測試用例之前,需要先了解Laravel Testing的基本結(jié)構(gòu)。Laravel測試用例和其他Laravel組件一樣,也是一個類。該類應(yīng)該繼承PHPUnitFrameworkTestCase類,并可以訪問Laravel框架中的各種服務(wù)。例如,測試中需要訪問控制臺命令,可以使用Artisan :: call方法。

Laravel Testing的基本結(jié)構(gòu)如下所示:

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

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

登錄后復(fù)制登錄后復(fù)制

該類包含了一個測試案例示例方法testBasicTest()。由于測試方法應(yīng)該被視為一個單獨的單一測試,因此最好根據(jù)測試的目的來命名測試方法。

編寫測試用例

編寫測試用例的過程通常分為以下幾個步驟:

準(zhǔn)備測試環(huán)境:啟動Laravel應(yīng)用程序并設(shè)置測試環(huán)境。定義測試:用戶定義一個或多個測試,以確保應(yīng)用程序邏輯的正確性。運行測試:運行測試并收集結(jié)果,根據(jù)結(jié)果進行分類,并且記錄測試的結(jié)果以便日后進行比較。

定義測試

定義測試用例的過程通常涉及以下幾個方面。

設(shè)置測試環(huán)境

在測試開始之前,需要設(shè)置測試環(huán)境。通過創(chuàng)建.env.testing文件,在其中設(shè)置測試環(huán)境變量。Laravel框架會自動在加載應(yīng)用程序時檢測到該文件,并且默認(rèn)使用該文件中的設(shè)置。

.env.testing示例:

APP_NAME=Laravel
APP_ENV=testing
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=sqlite
DB_DATABASE=:memory:

登錄后復(fù)制

其它設(shè)置也可以在.env.testing文件中添加或修改。在這里,我們將使用sqlite數(shù)據(jù)庫,這是一個輕量級且易于測試的數(shù)據(jù)庫引擎。

使用sqlite數(shù)據(jù)庫時,Laravel將自動完成數(shù)據(jù)的遷移,因此不需要手動遷移。在測試方法中訪問數(shù)據(jù)庫時,Laravel將自動使用在數(shù)據(jù)庫中放置數(shù)據(jù)的遷移。因此,在測試運行期間,不需要手動定義模式。

寫一個簡單的示例測試:

tests/Unit/ExampleTest.php

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

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

登錄后復(fù)制登錄后復(fù)制

在控制臺中運行此測試,使用以下命令:

phpunit tests/Unit/ExampleTest.php

登錄后復(fù)制

運行此測試后,將在控制臺中輸出測試結(jié)果:

PHPUnit 8.5.1 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 00:00.010, Memory: 6.00 MB

OK (1 test, 1 assertion)

登錄后復(fù)制

可以看到,測試成功通過。

使用Laravel數(shù)據(jù)庫

有時,我們需要訪問Laravel應(yīng)用程序內(nèi)部定義的實際數(shù)據(jù)庫。當(dāng)在應(yīng)用程序中使用Laravel的DB門面時,Laravel會自動選擇當(dāng)前的應(yīng)用程序環(huán)境。

通過以下方法可以進行測試:

$this->assertDatabaseHas('users', [
    'email' => '[email protected]'
]);

登錄后復(fù)制

此測試方法測試用戶存儲和檢索。在這里,我們使用assertDatabaseHas()將斷言添加到測試數(shù)據(jù)是否存在。

如果想要將記錄插入到數(shù)據(jù)庫中, 可以使用以下方法:

$user = factory(User::class)->create();

$this->assertDatabaseHas('users', [
    'email' => $user->email
]);

登錄后復(fù)制

使用偽造對象

你可以使用Laravel提供的Mockery對象庫生成模擬對象和傳遞依賴。使用Mockery模擬框架代替昂貴,硬編碼的對象,然后利用這些模擬服務(wù)以及其他依賴項,測試對象或更大的組件。

Mockery可以極大地簡化你的代碼,從而提高你的應(yīng)用程序的質(zhì)量和可維護性。

$string = Mockery::mock(‘IlluminateHttpRequest’);
$string->shouldReceive(‘input’)

    ->once()
    ->andReturn('Welcome to Laravel Testing');

登錄后復(fù)制

$this->assertTrue(strlen($string->input()) === 23);

在上面的代碼示例中,我們首先創(chuàng)建了一個偽造對象$string,它是IlluminateHttpRequest的模擬實例。然后我們編寫測試用例來測試模擬實例$input方法的返回值。

完成這些步驟后,我們便可以快速編寫測試用例,取得高效、可維護、高質(zhì)量的程序。

總結(jié)

直接就知道程序的運行結(jié)果是不能保證代碼完美運作,甚至有可能出現(xiàn)嚴(yán)重的錯誤。而單元測試能夠較全面地檢測應(yīng)用程序的每個組成部分,從而確保應(yīng)用程序的質(zhì)量與穩(wěn)定性。

在Laravel框架中,Laravel Testing是一種流行的測試框架。Laravel Testing是受歡迎的,因為它易于使用,與Laravel框架深度結(jié)合,并且具有廣泛的使用情況與應(yīng)用。

在編寫測試用例時,應(yīng)確保測試方法的名稱明確地描述了測試的功能。在測試方法中,使用assert()和其他相關(guān)斷言操作來測試方法。完成測試后,可以使用PHPUnit來運行測試。

因為Laravel Testing已經(jīng)在Laravel框架中集成,所以它使得開發(fā)人員可以輕松地測試他們的應(yīng)用程序。Laravel Testing使開發(fā)人員能夠更自信地修改和更新代碼,并確保不會對任何現(xiàn)有功能產(chǎn)生負(fù)面影響。

以上就是Laravel開發(fā):如何使用Laravel Testing進行高效的單元測試?的詳細內(nèi)容,更多請關(guān)注www.xfxf.net其它相關(guān)文章!

分享到:
標(biāo)簽:laravel Testing 單元測試
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定