如何用Mocha測試JavaScript - 基礎知識

2020-09-05 朗小妹兒

Mocha是最受歡迎的Node.js測試框架之一,它看起來很令人生畏,實際上卻很容易入門。



這個教程要講什麼?

本教程是關於Mocha基礎知識。

在本教程結束之前,我們將成功地使用Mocha編寫第一個測試。我們會了解如何設置Mocha,如何分組測試以及如何使用斷言庫。

明天我將發布第2部分,其重點是更高級的測試技術,以及將測試與實際的代碼整合在一起!

Mocha的文檔還不錯。不過,對於JavaScript新手來說,這文檔有點厚,不太好理解。我會帶大家玩一遍來自於Mocha文檔中的第一個例子。對於有些概念,我會比文檔做更多的分析和分解,以確保大家準確理解發生了什麼。

準備好了麼?我們開始吧!

全局安裝Mocha

通過執行如下命令,全局安裝Mocha:

$ npm install -g mocha

當全局安裝npm模塊時,不僅僅是將其用於當前項目,而是能像命令行工具一下訪問和使用該模塊。一旦Mocha被全局安裝了,我們就能夠在命令行上使用mocha關鍵字執行命令。

創建一個項目

接下來,我們將創建一個名為test的項目目錄。在test文件夾中,我們將創建一個名為test.js的文件。最後,我們通過執行npm init初始化我們的項目。

如果你不熟悉的話,npm init是一個以交互方式創建package.json文件的簡單方法。只需回答問題,然後敲回車鍵即可。這裡最重要的問題是 'test command:' - 回答'mocha'即可。這樣我們只需鍵入npm test就可以運行mocha。

完成後,應該有一個看起來像如下這樣的文件結構:

test|-- test.js|-- package.json

這裡package.json文件也應該包含如下的json:

"scripts": { "test": "mocha"},

有了上面這些東西後,我們就做好了測試的準備了!

編寫第一個測試

我們打算直接從Mocha文檔中複製一個測試,然後我會帶大家看看到底發生了什麼。將如下代碼複製到test.js文件中:

var assert = require('assert');describe('Array', function() { describe('indexOf() ✓ 當值不存在時,應該返回 -11 passing (9ms)leaf

我們的測試通過!太棒了。不過我們不知道為什麼...且聽下面分解。

記住,Mocha是一個測試框架。就是說它用於組合和執行測試。在編寫測試時,應該注意兩個基本的函數調用:**describe()**和**it()**。兩個都在上面的示例中用到了。

  • describe()只不過是Mocha中將測試分組的一種方法。我們可以按必要的深度來將測試分組嵌套。describe()帶有兩個參數,第一個是測試組的名稱,第二個是回調函數。


describe('string name', function(){ // 這裡可以嵌套更多的 describe(),或者寫測試 });

回想一下早前的例子。我們有一個名為Array的測試組,裡面有一個名為indexOf()_ ✓ 當值不存在時,應該返回 -11 passing (9ms)leaf

結果一行一行分解就是:

  1. 第一個測試組Array
  2. 嵌套的測試組indexOf()
  3. 表示通過測試的檢測標記,以及測試描述
  4. 一個摘要,表明我們有1次通過測試,測試花了9毫秒

放在一起

現在我們已經有了所有的東西,所以可以把它放在一起了。這是我們的原始測試,用注釋解釋了每一行:

// Require 內置的 'assertion' 庫var assert = require('assert');// 創建一組關於數組的測試describe('Array', function() { // 在 Array 組內,為 indexOf 創建一組測試 describe('#indexOf()', function() { // 一個字符串解釋我們在測試什麼 it('當值不存在時,應該返回 -1', function(){ // 實際測試: -1 應該等於 indexOf(...) assert.equal(-1, [1,2,3].indexOf(4)); }); });});javascript

檢驗學習情況

好了,該檢驗一下學習情況了。不要滾動查看答案,請編寫如下測試:

  1. 創建一個名為Math的測試組
  2. 在Math組內創建兩個測試
  3. 第一個測試:應該測試是否3*3=9
  4. 第二個測試:應該測試是否(3-4)*8 = -8

不要向下滾動,直到讓兩個測試通過!

不要向下滾動,直到讓兩個測試通過!

不要向下滾動,直到讓兩個測試通過!

測試答案

大家能做到嗎?如果沒有,沒關係!如果做到了,幹的不錯!下面我們看看注釋好的解決方案:

// require 內置的 'assertion' 庫var assert = require('assert');// 創建一個名為Math的測試套件(組)describe('Math', function() { // 第一個測試:一個字符串解釋我們在測試什麼 it('should test if 3*3 = 9', function(){ // 實際測試: 3*3 應該等於 9 assert.equal(9, 3*3); }); // 第二個測試: 一個字符串解釋我們在測試什麼 it('should test if (3-4)*8 = -8', function(){ // 實際測試: (3-4)*8 應該等於 -8 assert.equal(-8, (3-4)*8); });});javascript

並且當執行npm test時:

Math √ should test if 3*3 = 9 √ should test if (3-4)*8 = -82 passing (13ms)lsl

你做到了。

幹的不錯!現在(理想情況下)我們可以理解Mocha是什麼,如何設置它,如何分組測試以及如何使用斷言庫。

不過,如果無法實際測試代碼,那麼測試有什麼好處呢?

上就是今天的分享啦~

如果大家有問題或者想了解更多的

技術乾貨可以私信發送【微信】加朗妹兒微信喲~

相關焦點

  • 如何用Mocha測試JavaScript - 基礎知識
    如何用Mocha測試JavaScript - 基礎知識Mocha是最受歡迎的Node.js測試框架之一,它看起來很令人生畏,實際上卻很容易入門。這個教程要講什麼?本教程是關於Mocha基礎知識。更多乾貨內容請鎖定「朗妹兒」微信公眾號,每天都有更新。
  • 如何用Mocha測試JavaScript - 第2部分
    上一篇我們學習了Mocha的基礎知識本教程將提供如何使用Mocha進行測試的小型真實示例。到教程結束時,我們將成功使用Mocha測試現有的JS文件。在讀本教程之前,應該先了解Mocha是什麼,如何分組測試以及如何使用斷言庫。如果需要複習,請參閱我的第一篇Mocha教程。項目設置上一個教程中我們已經安裝了Mocha。
  • 2019年最流行的五大JavaScript 自動化測試框架
    Jest的優點和缺點首先是優點:(1)使用Jest的最大好處是最小配置和設置的開箱即用體驗,因為它附帶了一個mock支持斷言庫。與任何新的測試庫一樣,測試用例是使用行為驅動的開發方法編寫的。用戶可以將用戶的測試用例放在一個名為_tests_的文件夾中,並開始運行它們。
  • 「GitHub」 JavaScript 趨勢榜項目(第33周)
    11. jonasschmedtmann/complete-javascript-course項目地址:https://github.com/jonasschmedtmann/complete-javascript-course⭐:4,380
  • 基於JavaScript的單元測試
    Mocha 軟體是一個開源的 JavaScript 測試框架,它和 Jasmine 一起作為 JavaScript 語言中最為流行和常用的兩款單元測試框架,但是它自帶的功能比 Jasmine 更為強大。可以通過 Mocha 官網(http://mochajs.org)的學習資料快速學習 Mocha 的使用,因為其官網主頁就是全套基本教程。
  • AST抽象語法樹—最基礎的javascript重點知識
    javascript就像一臺精妙運作的機器,我們可以用它來完成一切天馬行空的構思。我們對javascript生態了如指掌,卻常忽視javascript本身。這臺機器,究竟是哪些零部件在支持著它運行?AST的能力十分強大,且能幫你真正吃透javascript的語言精髓。事實上,在javascript世界中,你可以認為抽象語法樹(AST)是最底層。 再往下,就是關於轉換和編譯的「黑魔法」領域了。
  • javascript在自動化測試項目中的應用「軟體測試開發入門教程」
    比如說我今天分享的主題是javascript在自動化測試中的應用有些朋友說我之前講的自動化測試的東西,需要消化很久,有一定的難度,意思就是說我動不動就講測試框架,測試開發是不是會有這樣的感覺?比如今天分享的javascript,大家做軟體測試有沒有用過?
  • 如何練習JavaScript,軟體測試和測試自動化技能
    我做同樣的事情來支持我的測試,例如設置數據,刪除數據等。這是一種「戰術」自動化的形式。它不會擴展,也不會進入持續集成。它支持我。它完成了一項特定任務。它使我的部分工作自動化。學習更具戰略性的自動化是一個良好的開端。要自動化類型,我必須學習如何觸發滑鼠事件以啟動觸發功能。我不記得怎麼做了。
  • Nodejs測試:從0到90(實踐篇)
    方法以下示例均基於mocha.異步在異步操作完成時,調用回調(通常是 done) 即可。,並不直接測試私有方法。但是如果當私有方法特別多且複雜時,測試私有方法比測試接口或公共方法更直接、有效。嚴格上講,javascript並沒有私有方法的概念,這裡所討論的私有方法指未被導出(exports)的方法。
  • 0基礎學習JavaScript一定要知道如何使用VS2019去編寫代碼
    編寫JS代碼對於.NET開發者來說,前端技術也是不能少的,0基礎的開發者來說,使用Visual Studio 2019開發工具是非常容易上手的。這裡創建一個空白的Web應用程式項目,ASP.NET Web應用程式是完全支持JavaScript代碼編寫的。
  • web前端工程師要掌握的基礎知識和技能
    web前端工程師要掌握的基礎知識和技能: 1、網頁的基本結構(HTML + CSS)HTML是一種標記語言,而不是程式語言,最基本是標籤是和,CSS是用來定義如何顯示HTML元素的。
  • 阿勇pr:在pr中使用mocha插件跟蹤移動拍攝的電腦屏幕實例一
    這節課開始利用實例講解mocha跟蹤的用法,AE中有很多跟蹤方法,在pr中只有蒙版跟蹤,效果也比較局限,為了實現更好的跟蹤效果,這邊找到mocha,mocha有獨立版,插件版,這邊只介紹插件版,這個是安裝文件,需要可以按照上面方式下載,這個是安裝方法,直接按照步驟操作就可以,安裝完成,打開pr
  • 什麼是JavaScript?JavaScript是用什麼寫的
    所以,雖然你可以用JavaScript比C++更快地輸入一個程序,但是JavaScript代碼運行的速度要慢得多。但是,如果您有任何編程經驗,您可以在20小時內通過本教程學習javascript。你也可以在沒有編碼經驗的情況下學習,但是你需要更多的關注。什麼是JavaScript簡單定義?JavaScript是Web開發中常用的程式語言。
  • Web開發的大爆炸:利用JavaScript進行移動
    JavaScript是我們稍後將要探討的常用框架的基礎。它是MEAN堆棧的基礎 - 當今Web開發的標準。MEAN代表M:MongoDB(後端/資料庫),E:Express(易於在HTTP後端使用Node.js模塊),A:Angular(頁面結構的前端框架)和N:Node.js 。我們將在未來幾周內探索Node.js!
  • JavaScript_基礎練習7
    JavaScript HTML DOMHTML-----html標記JavaScript -----javascript對象/變量我們現在需要通過JavaScript來改變html標記所呈現的樣子那麼這是我們就需要將html標記轉換成javascript對象將html標記轉換成javascript對象----HTML DOM對象DOM(文檔對象模型)當網頁被加載時,瀏覽器會創建頁面的文檔對象模型(Document Object
  • 軟體測試基礎知識大全
    軟體測試基礎知識大全(新手入門必備)測 試 基 礎1、 軟體測試的目的:證明(表達軟體能夠工作)→ 檢測(發現錯誤)→ 預防(管 理質量)2、 測試執行:單元測試(UT執行):一個測試用例的測試執行; 集成測試(IT執行):一個測試用例集的測試執行; 系統測試(ST執行):不同測試階段的測試執行。
  • JavaScript單元測試實踐:QUnit在瀏覽器擴展API測試中的應用
    每款瀏覽器都會給開發者提供一些API接口用於插件開發,這些API在發布給開發者使用前必須經過相應的測試,那麼如何對這些API接口進行測試呢?本文我們主要介紹QUnit在瀏覽器擴展API測試中的應用!一、什麼是單元測試?
  • 如何理解JavaScript基礎數據類型
    點擊右上方紅色按鈕關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!大家好!我是/小鄭搞碼事/的小鄭今天和大家分享如何理解JavaScript的基礎數據類型。JavaScript中的基礎數據類型包括數字,字符串,布爾,數組,對象,Null,Undefined。下面我們一個一個來說一下。
  • 什麼是《現代 JavaScript 教程》?
    現代 JavaScript 教程以最新的 JavaScript 標準為基準,通過簡單但足夠詳細的內容,為你講解從基礎到高階的 JavaScript 相關知識。這個教程維護到現在已經有近三年的時間了,一直也沒有對其專門做宣傳,都是讀者口口相傳。這個教程主要有三大特色。第一大特色:解決了現存 JavaScript 書籍最大的痛點:實時性。
  • 「Mocha pro」攝像機反求模塊詳解
    大家好,今天羅雪給大家帶來的是Mocha pro攝像機反求的理論知識基礎,攝像機運動一般分為,定點推拉搖,小幅度在空間中移動,大幅度複合運動,三種情況,那針對這三種情況,我們來看下具體的解決方案,其實這裡面的知識點針對任何一種攝像機反求都是可以使用的,好啦,進入正題:Mocha