2016-10-22 49 views
1

我已經編寫了一個JavaScript庫/模塊,用於調用靜默Web服務的API調用,並向該庫的使用者提供方法。該庫的構建方式使得相同的代碼既可以用作前端庫,也可以用作npm模塊(使用browserify轉換後的代碼)。JavaScript和Mocha的單元測試

但是,我現在計劃爲同樣的單元測試編寫,這是我第一次編寫整個庫。所以,我已經看過像摩卡和茉莉花這樣的圖書館,這似乎是它的好選擇。我正在考慮在摩卡書寫測試。但是,我不太清楚如何從這些測試開始。

此外,應該像測試用例那樣測試功能的測試被稱爲集成測試,還是應該將這些測試與單元測試結合起來?

如果任何人都可以推薦一些Github的示例測試或一些摩卡初學者的教程,我會很高興。我也很樂意考慮其他單元測試框架。

在此先感謝

+0

我增加了一個這一點,因爲不確定爲什麼人們減去初學者的積分。 –

回答

1

我想到寫在摩卡測試。但是,我不太清楚如何從這些測試開始。

單元測試通常只包括功能測試,不包括集成測試和迴歸測試,這意味着你應該測試每個功能儘可能即可。

一個基本的例子就是這樣。

function alwaysReturnTrue(){ 
    return True; 
} 
assertTrue(alwaysReturnTrue()); 

關於單元測試框架,如mochaJasmine,他們只發起了一個框架來運行測試。其中大部分將提供基本的assert功能,如assertTrue,assertFalse,assertEqual等。

顯然,那些斷言方法不足以測試所有的角落案例。

  • 回調函數
  • 函數調用序列
  • 函數調用的參數
  • 觸發例外
  • 假XHR或服務器

爲了處理這些東西,它可以通過一個流行的完成解決方案,這被稱爲sinon


另外,應該測試樣的試樣消費者的功能性的測試被稱爲集成測試或應用的那些單元測試組合?

不,集成測試通常重複您的軟件的整個序列,而不是一個單一的功能。那些東西也可以由sinon完成。(假XHR或服務器)

For example: without UI 
Login() -> Send exit request to serverlet -> Logout() 
Login() -> Send exit request with save="true" data to serverlet -> Logout() 

正如我上面提到的,我們還有哪些尚未討論的另一個考驗。它被稱爲迴歸測試這是最複雜的測試。有兩個着名的UI測試庫可以做到這一點,seleniumphantomjs

For example: with UI 
Login() -> Click Button Exit() -> Logout() 
Login() -> Click Checkbox A() -> Click Button Exit() -> Logout() 

總體而言,一個完整的軟件測試過程有三個過程。但是,在現實世界中,時間是有限的。如果您的項目規模很小,則可能會跳過迴歸或集成測試。

step: unit test -> integration test -> regression test 
time: (short)  (longer)   (very long) 
相關問題