Yii框架官方指南系列38-定義特定狀態(Fixtures)
自動測試需要被執行很多次.為了確保測試過程是可以重複的, 我們很想要在一些可知的狀態下進行測試, 這個狀態我們稱之為特定狀態. 舉個範例,在一個部落格應用程式中測試文章建立特性, 每次當我們進行測試時, 與文章相關的表(例如. Post
表, Comment
表)應該被恢復到一個特定的狀態下. PHPUnit 文檔已經很好的描述了一般的特定狀態的構建. 而本節主要介紹怎樣像剛才描述的例子那樣構建數據庫特定狀態.
設置構建數據庫的特定狀態,這恐怕是測試以數據庫為後端支持的應用最耗時的部分之一.Yii 引進的CBbFixtureManager 應用組件可以有效的減輕這一問題.當進行一組測試的時候,它基本上會做以下這些事情:
在所有測試運行之前,它重置測試相關數據為可知的狀態.
在單一測試運行之前, 它將特定的表重置為可知狀態.
在一個測試方法執行過程中, 它提供了供給特定狀態的行資料的存取介面.
請如下使用我們在應用程式設定中設定的CDbFixtureManager.
return array( 'components'=>array( 'fixture'=>array( 'class'=>'system.test.CDbFixtureManager', ), ), );
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
return array(
&#39;sample1&#39;=>array(
'title'=>'test post 1',
'content'=>'test post content 1',
'createTime'=>1230952187,
'authorId'=>1,
),
'sample2'=>array(
'title'=>'test post 2',
'content'=>'test post content 2',
'createTime'=>1230952287,
'authorId'=>1,
),
);</pre><div class="contentsignin">登入後複製</div></div>
資料. 這個目錄可以透過設定應用程式設定檔中的CDbFixtureManager::basePath 屬性指定為其他目錄.特定狀態資料是由多個稱為特定狀態檔案的PHP檔案組合而成.每個特定狀態檔案傳回一個陣列, 代表資料的一個特定表的初始行.檔名和表名相同.以下則是將
Post
Post.php
文件裡的例子.
行別名的字串(例如:
simple1,
simple2
id 字段的值. 這是因為
id
當CDbFixtureManager 第一次被引用時, 它會仔細檢查所有的特定狀態文件然後使用他們重置對應的表.它通過清空表,重置表主鍵的自增序列值,然後插入來自特定狀態檔案的資料行到表中來重置表.
有時候,我們可能不想在一套測試前重置特定狀態檔案裡描述的每一個表, 因為重置太多的特定狀態檔案可能需要很多時間.這種情況下,我們可以寫一個PHP腳本來定制這個初始化過程.這個腳本應該被保存在存放特定狀態文件的目錄下,並命名為
init.php.當CDbFixtureManager 檢測到了這個腳本的存在, 它將執行這個腳本而不是重置每一個表.
.init.php. 當CDbFixtureManager 發現了這個腳本,它將執行這個腳本而不是採用預設的方式去重置該表. Tip:. 例如: Post 表的初始化腳本檔案就是
Post.init.php
太多的特定狀態文件大大延長了測試時間.因此, 你應該只為那些在測試中數據會發生變化的表提供特定狀態文件. 那些做為查找服務的表不會改變,因此不需要特定狀態文件.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Yii是一款基於PHP的高效能MVC框架,它提供了非常豐富的工具和功能,支援快速、有效率地開發Web應用程式。其中,Yii框架的RESTfulAPI功能得到了越來越多開發者的關注和喜愛,因為使用Yii框架可以非常方便地構建出高性能、易擴展的RESTful接口,為Web應用的開發提供了強有力的支持。 RESTfulAPI簡介RESTfulAPI是一種基於

Yii框架中間件:為應用程式提供多重資料儲存支援介紹中間件(middleware)是Yii框架中的重要概念,它為應用程式提供了多重資料儲存支援。中間件的作用類似於一個過濾器,它能夠在應用程式的請求和回應之間插入自訂程式碼。透過中間件,我們可以對請求進行處理、驗證、過濾,然後將處理後的結果傳遞給下一個中間件或最終的處理程序。 Yii框架中的中間件使用起來非常

隨著Web應用程式的快速發展,現代Web開發已成為一項重要技能。許多框架和工具可用於開發高效的Web應用程序,其中Yii框架就是一個非常流行的框架。 Yii是一個高效能、基於元件的PHP框架,它採用了最新的設計模式和技術,提供了強大的工具和元件,是建立複雜Web應用程式的理想選擇。在本文中,我們將討論如何使用Yii框架來建立Web應用程式。安裝Yii框架首先,

使用Yii框架實現網頁快取和頁面分塊的步驟引言:在Web開發過程中,為了提升網站的效能和使用者體驗,常常需要對頁面進行快取和分塊處理。 Yii框架提供了強大的快取和佈局功能,可以幫助開發者快速實現網頁快取和頁面分塊,本文將介紹如何使用Yii框架進行網頁快取和頁面分塊的實作。一、網頁快取開啟網頁快取在Yii框架中,可以透過設定檔來開啟網頁快取。開啟主設定檔co

近年來,隨著遊戲產業的快速發展,越來越多的玩家開始尋找遊戲攻略來幫助遊戲過關。因此,創建遊戲攻略網站可以讓玩家更方便取得遊戲攻略,同時也能為玩家提供更好的遊戲體驗。在創建這樣一個網站時,我們可以使用Yii框架來進行開發。 Yii框架是一個基於PHP程式語言的Web應用開發框架。它具有高效、安全、擴展性強等特點,可以為我們更快速、高效地創建一個遊戲攻略

Yii框架中間件:為應用程式新增日誌記錄和偵錯功能【引言】在開發Web應用程式時,我們通常需要添加一些附加功能以提高應用程式的效能和穩定性。 Yii框架提供了中間件的概念,使我們能夠在應用程式處理請求之前和之後執行一些額外的任務。本文將介紹如何使用Yii框架的中間件功能來實作日誌記錄和除錯功能。 【什麼是中間件】中間件是指在應用程式處理請求之前和之後,對請求和回應做

在Yii框架中,控制器(Controllers)扮演著處理請求的重要角色。除了處理常規的頁面請求之外,控制器還可以用於處理Ajax請求。本文將介紹在Yii框架中處理Ajax請求的方法,並提供程式碼範例。在Yii框架中,處理Ajax請求可以透過以下步驟進行:第一步,建立一個控制器(Controller)類別。可以透過繼承Yii框架提供的基礎控制器類別yiiwebCo

在現代的Web應用程式開發中,調試工具是不可或缺的。它們可以幫助開發者找到和解決應用程式的各種問題。 Yii框架作為一款流行的Web應用程式框架,自然也提供了一些除錯工具。本文將重點介紹Yii框架中的調試工具,並討論它們如何幫助我們分析和調試應用程式。 GiiGii是Yii框架的程式碼產生器。它可以自動產生Yii應用程式的程式碼,如模型、控制器和視圖等。使用Gii,
