溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

yii怎樣寫單元測試

發(fā)布時間:2020-12-17 11:47:45 來源:億速云 閱讀:201 作者:小新 欄目:編程語言

小編給大家分享一下yii怎樣寫單元測試,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

單元測試

單元測試位于tests/unit目錄中,應(yīng)該包含所有類型的單元和集成測試。

每個測試用例都擴展了Codeception\Test\Unit類,這是用于單元測試的標(biāo)準(zhǔn)Codeception格式。在Yii中開發(fā)完全隔離的單元測試非常困難,因此在每個測試用例之前都要啟動一個應(yīng)用程序。                  

在tests/unit.suite.yml啟用了Yii2模塊的文件中配置測試:

modules:
    enabled:
      - Yii2:
            part: [orm, email]

該模塊為一個測試案例啟動Yii應(yīng)用程序,并提供其他幫助程序方法來簡化測試。它只有orm和email零件,以排除需要的只是功能性的測試方法。

通過訪問$this->tester測試用例中的類,可以使用Yii2模塊的方法。因此,如果啟用了orm和email部分,則可以調(diào)用屬于這些部分的方法:

<?php
// insert records in database
$this->tester->haveRecord('app/model/User', ['username' => 'davert']);
// check records in database
$this->tester->seeRecord('app/model/User', ['username' => 'davert']);
// test email was sent
$this->tester->seeEmailIsSent();
// get a last sent emails
$this->tester->grabLastSentEmail();

如果啟用fixtures零件,您還將獲得在測試中加載和使用夾具的方法:

<?php
// load fixtures
$this->tester->haveFixtures([
    'user' => [
        'class' => UserFixture::className(),
        // fixture data located in tests/_data/user.php
        'dataFile' => codecept_data_dir() . 'user.php'
    ]
]);
// get first user from fixtures
$this->tester->grabFixture('user', 0);

如果Yii2啟用了模塊,則可以安全地Yii::$app在測試內(nèi)調(diào)用,因為在測試后將初始化并清理應(yīng)用程序。如果你想添加的輔助方法或自定義斷言為您的測試情況下,你不應(yīng)該延長Codeception\Test\Unit,但寫自己的獨立的輔助類。

看完了這篇文章,相信你對yii怎樣寫單元測試有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

yii
AI