單元測試
單元測試位於tests/unit目錄中,應該包含所有類型的單元和整合測試。
每個測試案例都擴展了Codeception\Test\Unit類,這是用於單元測試的標準Codeception格式。在Yii中開發完全隔離的單元測試非常困難,因此在每個測試案例之前都要啟動一個應用程式。 (推薦學習:yii教程)
在tests/unit.suite.yml啟用了Yii2模塊的文件中配置測試:
modules: enabled: - Yii2: part: [orm, email]
該模塊為一個測試案例啟動Yii應用程序,並提供其他幫助程序方法來簡化測試。它只有orm和email零件,以排除需要的只是功能性的測試方法。
透過存取$this->tester測試用例中的類,可以使用Yii2模組的方法。因此,如果啟用了orm和email部分,則可以呼叫屬於這些部分的方法:
<?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在測試內調用,因為在測試後將初始化並清理應用程式。如果你想添加的輔助方法或自訂斷言為您的測試情況下,你不應該延長Codeception\Test\Unit,但寫自己的獨立的輔助類別。
以上是yii如何寫單元測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!