Ember 測試簡介

2018-01-06 18:06 更新

英文原文:https://guides.emberjs.com/v2.7.0/testing/

測試簡介

測試是Ember。js框架開發(fā)環(huán)節(jié)中很重要的一環(huán)。

現(xiàn)在假設(shè)你正在利用Ember框架開發(fā)一個(gè)博客系統(tǒng),這個(gè)系統(tǒng)包含userpost模型,有登錄及創(chuàng)建博客的操作。最后假設(shè)你希望在你的程序里實(shí)現(xiàn)自動化測試。

測試類型

你一共需要下面這3種類型的測試:

  1. 驗(yàn)收測試Acceptance
  2. 單元測試Unit
  3. 集成測試Integration

驗(yàn)收測試 Acceptance Tests

驗(yàn)收測試是用來確保程序流程正確,且各類交互特性符合用戶預(yù)期的測試。

驗(yàn)收測試用于確認(rèn)項(xiàng)目基本功能,保證項(xiàng)目核心功能沒有退化,確保該項(xiàng)目的目標(biāo)得以實(shí)現(xiàn)。測試應(yīng)用的方式和用戶與應(yīng)用程序的交互方式是一致的(比如填寫表單,點(diǎn)擊按鈕)。

在上述的場景中,可能會做如下的驗(yàn)收測試:

  1. 用戶可以通過登錄表單登錄。
  2. 用戶可以創(chuàng)建博客。
  3. 當(dāng)成功保存一篇博客文章后,程序會返回博客列表給用戶。
  4. 訪客不能訪問管理界面。

單元測試 Unit Tests

單元測試是針對程序中的最小可測試單元進(jìn)行的測試,比如一個(gè)類或者一個(gè)方法。該測試可以編寫與程序邏輯相對的語句來測試相關(guān)單元

下面是一些單元測試的具體例子:

  1. 用戶姓名是由對應(yīng)的姓和名組合而成的。
  2. 把博客請求數(shù)據(jù)正確序列化轉(zhuǎn)換為一個(gè)博客模型對象。
  3. 正確格式化博客時(shí)間。

集成測試 Integration Tests

集成測試是處于單元測試和驗(yàn)收測試之間的測試。集成測試目的是驗(yàn)證客戶端與全系統(tǒng)交互,所有單元測試,以及微觀層面具體代碼的算法邏輯是否都能通過。

集成測試用來驗(yàn)證應(yīng)用程序各個(gè)模塊相互關(guān)系,比如若干個(gè)UI控件之間的行為。也可以用于確認(rèn)數(shù)據(jù)和動作在系統(tǒng)不同的部件中被正確的傳遞和執(zhí)行,同時(shí)在給定假設(shè)條件下,可以提供系統(tǒng)各部件配合運(yùn)行的情況。

我們建議對每個(gè)組件都進(jìn)行集成測試,因?yàn)榻M件各個(gè)組件以相同的方式運(yùn)行在系統(tǒng)的上下文中,并且組件之間也有相互影響,包括從模板中渲染組件、接收組件生命周期回調(diào)函數(shù)。

集成測試示例如下:

  1. 用戶姓名和日期正確的顯示在每篇博文上
  2. 禁止用戶在標(biāo)題欄內(nèi)輸入超過50個(gè)字符
  3. 當(dāng)提交一個(gè)沒有標(biāo)題的博客時(shí),顯示紅色提醒并給出需要標(biāo)題的錯(cuò)誤信息
  4. 博客列表滾動到最頂端顯示最新博客

測試框架

QUnit是本手冊的默認(rèn)測試框架,但是Ember.js也支持其他第三方的測試框架。

如何運(yùn)行測試

在命令行輸入ember test來運(yùn)行測試。也可以通過ember test -server命令,在每次文件改動后,重新運(yùn)行測試。

在本地開發(fā)項(xiàng)目的時(shí)候可以通過訪問/tests/index.html來運(yùn)行你的測試,前提是你需要使用命令ember server運(yùn)行了你的項(xiàng)目。如果你是使用這種方式有一點(diǎn)需要注意:

  • 通過ember server運(yùn)行的測試,是在開發(fā)環(huán)境下的測試,調(diào)用的是開發(fā)環(huán)境下的參數(shù)
  • 通過ember test --server運(yùn)行的測試,是在測試環(huán)境下的測試,調(diào)用的是測試環(huán)境下的參數(shù),比如加載的依賴也是不同的。因此我們推薦你使用ebmer test --server來運(yùn)行測試。

指定測試

使用--filter選項(xiàng)來指定運(yùn)行部分測試。比如:快速運(yùn)行當(dāng)前工作的測試使用命令ember test --filter="dashboard"、運(yùn)行指定類型的測試使用命令ember test --filter="integration"、可以使用!來排除驗(yàn)收測試ember test --filter="!acceptance"

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號