日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

眾所周知,代碼很容易出錯,有時即使我們知道特定的工作流程在某些情況下可以正常工作,我們也很有可能忘記其他一些情況。

簡單來說,可以說當我們手動測試代碼時,我們可能會錯過一些東西。例如,假設我們有兩個函數(shù),func1()func2(),并且我們知道 func1() 適用于以下情況我們已經在測試中定義了,但我們發(fā)現(xiàn) func2() 不起作用。然后我們修復了 func2() 但后來忘記檢查 func1() 在我們在 func2() 中進行更改后是否適用于整個流程。 這個過程可能會導致錯誤,而且這種情況很典型,會發(fā)生幾次。

現(xiàn)在,我們知道以手動方式運行測試并不是一個非常理想的選擇,因此建議除了我們可能編寫的代碼之外,還運行單獨編寫的測試。這就是所謂的自動化測試。

在本教程中,我們將探討如何在 JavaScript 中使用 Mocha 進行自動化測試。

第一步是能夠在我們的代碼中同時使用 Mocha。為此,我們可以利用 mocha.js 為我們提供的 CDN 鏈接。在本教程中,我們還將使用 Chai.jsExpect.js,當我們想要檢查我們可能的不同函數(shù)的確切行為時,它們可以很好地與 Mocha 配合使用。已寫。

以下是您需要在 index.html 文件中導入的所有 CDN。

Expect.js

https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js

登錄后復制

Chai.js

https://cdn.rawgit.com/chaijs/chai/3.5.0/chai.js

登錄后復制

Mocha.js

https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js

登錄后復制

下一步是在您最喜歡的 IDE 或代碼編輯器的簡單項目目錄中創(chuàng)建三個文件。

    index.html
    index.js
    測試.js

    您還可以使用下面所示的命令

    touch index.html index.js tests.js
    

    登錄后復制

    注意touch 命令可能無法在您的本地計算機上運行,??在這種情況下,請使用 vi 命令相反。

    index.html

    現(xiàn)在我們創(chuàng)建了所有文件,是時候編寫代碼了。打開 index.html 文件并粘貼以下行。

    示例

    <!DOCTYPE html>
    <html>
    <head>
       <meta charset="utf-8">
       <title>Automated Testing With Mocha</title>
       <link  rel="stylesheet" />
    </head>
    <body>
       <div id="mocha"></div>
       <script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script>
       <script src="https://cdn.rawgit.com/chaijs/chai/3.5.0/chai.js"></script>
       <script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script>
       <script src="index.js"></script>
       <script>
          const mocha = window.mocha;
          mocha.setup('bdd');
       </script>
       <script src="tests.js"></script>
       <script>
          mocha.checkLeaks();
          mocha.run();
       </script>
    </body>
    </html>
    

    登錄后復制

    說明

    在上面的 HTML 代碼中,我通過 CDN 導入了所有依賴項,例如 Mocha、ChaiExpect

    然后我以同步順序導入了兩個不同的 js 文件,即 index.jstests.js,這意味著,首先index.js 文件運行,然后是一個腳本,我在其中設置 window.mocha()bdd。

    考慮下面顯示的代碼片段。

    const mocha = window.mocha;
    mocha.setup('bdd');
    

    登錄后復制

    在上面的代碼之后,我調用 tests.js 文件,然后調用 Mocha 的不同方法。考慮下面顯示的代碼片段。

    mocha.checkLeaks();
    mocha.run();
    

    登錄后復制

    現(xiàn)在是時候我們編寫一些函數(shù)來以自動化方式使用 Mocha 測試它們了。考慮下面所示的 index.js 代碼。

    function addNumbers(a, b) {
       return a + b;
    }
    

    登錄后復制

    上面的函數(shù)是一個非常簡單的函數(shù),其中我們有兩個參數(shù),然后在響應中簡單地返回這兩個數(shù)字的和。

    測試.js

    現(xiàn)在到了有趣的部分,我們將借助自動化測試來測試上述功能是否按預期工作。考慮如下所示的tests.js 代碼。

    const chai = window.chai
    const expect = chai.expect
    describe('addNumbers', () => {
       it('should be able to add two numbers and give proper result', () => {
          expect(addNumbers(1, 3)).to.deep.equal(4)
          expect(addNumbers(1, 5)).to.deep.equal(6)
          expect(addNumbers(-9, -10)).to.deep.equal(-19)
       })
    })
    

    登錄后復制

    在上面的代碼中,我導入了 ChaiExpect 包,這些包是通過 index.html 文件。

    此外,我們正在使用 describe 函數(shù),其中我們傳遞的第一個參數(shù)是我們選擇的字符串。接下來,我們創(chuàng)建一個匿名函數(shù),在其中調用 it() 函數(shù),該函數(shù)又將字符串作為第一個參數(shù),將匿名箭頭函數(shù)作為第二個參數(shù)。

    我們正在使用expect函數(shù),其中我們調用我們想要測試的實際函數(shù)作為參數(shù),然后使用deep.equal()方法檢查是否相等。

    輸出

    運行 HTML 代碼并在瀏覽器中打開代碼后,一切都應該按預期工作。您應該會在瀏覽器中看到打印的文本,有點類似于下面顯示的內容。

    >addNumbers
    should be able to add two numbers and give proper result
    

    登錄后復制

    讓我們添加第二個函數(shù)

    在上面的示例中,我們測試了一個名為 addNumbers 的簡單 JavaScript 函數(shù)。現(xiàn)在,讓我們嘗試添加另一個函數(shù),但這一次,我們將使用箭頭函數(shù)。考慮下面所示的代碼。

    index.js

    let multiplyNumber = (a, b) => {
       return a * b;
    }
    

    登錄后復制登錄后復制

    測試.js

    現(xiàn)在,讓我們在 tests.js 文件中為上述函數(shù)編寫一個自動化測試。考慮下面顯示的代碼片段。

    describe('multiplyNumber', () => {
       it('should be able to multiply two numbers and give proper result',() => {
           expect(multiplyNumber(1, 3)).to.deep.equal(3)
          expect(multiplyNumber(1, 5)).to.deep.equal(5)
          expect(multiplyNumber(-9, -10)).to.deep.equal(90)
       })
    })
    

    登錄后復制

    輸出

    運行 HTML 代碼,這次您將在瀏覽器中獲得這兩個函數(shù)的名稱。

    addNumbers
    should be able to add two numbers and give proper result?
    multiplyNumber
    should be able to multiply two numbers and give proper result
    

    登錄后復制

    如果函數(shù)沒有返回預期輸出怎么辦?

    在我們?yōu)槠渚帉懽詣踊瘻y試的兩個函數(shù)中,我們實際上期望得到正確的值。如果我們更改函數(shù)的核心邏輯以返回錯誤值怎么辦?

    考慮 index.js 文件中存在一個名為 multiplyNumber 的函數(shù)。讓我們對函數(shù)進行更改,以便它不會給出我們預期的輸出。

    乘數(shù)

    let multiplyNumber = (a, b) => {
       return a * b;
    }
    

    登錄后復制登錄后復制

    輸出

    現(xiàn)在,如果我們在瀏覽器中運行 HTML 代碼,我們將在瀏覽器中得到以下輸出。

    multiplyNumber
    should be able to multiply two numbers and give proper result?
    AssertionError: expected 0.3333333333333333 to deeply equal 3
    

    登錄后復制

    使用多個描述函數(shù)進行自動化測試

    在上面的兩個示例中,我們使用了單個 describe 函數(shù)和簡單函數(shù)。現(xiàn)在假設我們想要使用一個函數(shù)來計算數(shù)字的冪。

    考慮下面所示的index.js代碼

    function power(x, n) {
       let res = 1;
       for (let i = 0; i < n; i++) {
          res *= x;
       }
       return res;
    } 
    

    登錄后復制

    在上面的函數(shù)中,我們采用兩個參數(shù),然后將一個數(shù)字的冪提高到 n 倍。

    測試.js

    現(xiàn)在讓我們?yōu)榇撕瘮?shù)編寫一個自動化測試。

    describe("power", function () {
       describe("raises x to power 2", function () {
          function checkPower(x) {
             let expected = x * x;
             it(`${x} in the power 2 is ${expected}`, function () {
                expect(power(x, 2)).to.deep.equal(expected);
             });
          }
          for (let x = 1; x <= 5; x++) {
             checkPower(x);
          }
       });
    });
    

    登錄后復制

    我們可以看到,在自動化測試函數(shù)中,我們使用了嵌套的describe函數(shù)。在這里,我們檢查在 index.js 中編寫的 power() 函數(shù)是否按預期工作。

    輸出

    power
    raises x to power 2
    1 in the power 2 is 1?
    2 in the power 2 is 4?
    3 in the power 2 is 9?
    4 in the power 2 is 16?
    5 in the power 2 is 25
    

    登錄后復制

    結論

    在本教程中,我們通過示例解釋了如何使用 Mocha.js 與 Chai.js 和 Expect.js 在 JavaScript 中執(zhí)行自動化測試。

    以上就是使用 Mocha.js 進行自動化 Javascript 測試的詳細內容,更多請關注www.92cms.cn其它相關文章!

分享到:
標簽:javascript JS Mocha 測試 自動化
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定