亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

自動化測試(未完,后續(xù)學習之后會補充更具體的)

姘存按 / 2353人閱讀

摘要:斷言斷言是什么模塊提供了一組簡單的斷言測試,可用于測試不變量。環(huán)境是他們不必設置大量配置的環(huán)境,而是開發(fā)人員可以編寫代碼并從測試中獲得即時反饋的地方。每當測試時,結果將出現(xiàn)在您的拉取請求中,您的歷史記錄將在其控制面板中提供。

Node assert (斷言)
斷言是什么
assert 模塊提供了一組簡單的斷言測試,可用于測試不變量。
存在嚴格模式(strict)和遺留模式(legacy),但建議僅使用嚴格模式。
簡單說就是用來做測試的
嚴格模式的引入: const assert = require("assert").strict;
遺留模式的引入: const assert = require("assert")
API 學習
1. assert.equal(actual, expected[, message])
message 是可選屬性,報錯拋出message
嚴格模式:assert.strictEqual
注意: 只能判斷基本數(shù)據(jù)類型,引用類型不可以判斷
    assert.equa(1,1) // true 通過
    assert.equa({a:1},{a:1})  // false 未通過
    equal  表示 ==
    strictEqual 表示 ===
    // 所以要注意隱式轉換的問題比如說
    assert.equa("1",1) // true 通過
    assert.strictEqual("1",1) // false 報錯
2. assert.deepEqual(actual, expected[, message])
嚴格模式: assert.deepStrictEqual(actual, expected[, message])
解釋: 判斷期望值和實際值是否相等,可判斷可枚舉屬性
具有equal函數(shù)的相同功能,也能判斷對象,數(shù)組
    assert.deepEqual(["1",2],[1,2]) // 通過
    // 嚴格模式下
    assert.deepStrictEqual(["1",2],[1,2])  //未通過
    // 循環(huán)在比較數(shù)組中的每一個元素
    
    主要就是是使用這2個嚴格模式
Mocha 測試框架
Mocha 是一個在Node.js和瀏覽器上運行的功能豐富的JavaScript測試框架,使異步測試變得簡單而有趣。
Mocha 測試以串行方式運行,允許靈活準確的報告,同時將未捕獲的異常映射到正確的測試用例
首先是安裝
建議使用項目里面安裝mocha,不然全部安裝使用會影響別的項目.記得這是開發(fā)依賴
npm install --save-dev mocha
然后創(chuàng)建一個test 文件夾,所有的測試文件放在test下

編寫測試

接下來我們可以編寫測試案例了,新建一個add.js 代碼如下
module.exports = function (a,b) {
    return a+b;
};
下面我們就對這個函數(shù)進行測試在test文件夾下面新建一個test.js文件上面我們已經在項目中安裝了mocha
const assert = require("assert");
const add = require("../add.js");
describe("#add", () =>{
    it("sum(3,5) should return 8", () => {
         assert.strictEqual(sum(3,5), 8);
    })
})
這時候我們來看一下 deescribe 這個函數(shù) 可以任意嵌套多作為一個組,直白點就是給你當注釋用的it 函數(shù)是一個測試用例 你可以下多個 放在it里面
現(xiàn)在我們要配置測試,我們在package.json里面配置一個test命名 對應 mocha 就可以了.
運行 npm test 那么一個測試就完成了
還有一些生命周期的函數(shù),可以把下面這段代碼添加進
describe("#add", () =>{
    before(function () {
            console.log("before:");
        });

        after(function () {
            console.log("after.");
        });

        beforeEach(function () {
            console.log("  beforeEach:");
        });

        afterEach(function () {
            console.log("  afterEach.");
    });
    it("sum(3,5) should return 8", () => {
         assert.strictEqual(sum(3,5), 8);
    })
})
  
  可以看一下這個生命周期,了解一下.

異步測試

用mocha測試一個函數(shù)是非常簡單的,但是,在JavaScript的世界中,更多的時候,我們編寫的是異步代碼,所以,我們需要用mocha測試異步函數(shù)。
這里涉及一個新的知識點 async 函數(shù),可能有的小伙伴不太會,這里啰嗦一下,因為我也不太懂
async 函數(shù)
    我理解的 async
    
    以前我們使用 callback。

    后來我們使用 Promise。

    現(xiàn)在我們使用 Async/Await。
    
    Async - 定義異步函數(shù)(async function someName(){...})
    - 自動把函數(shù)轉換為 Promise
    - 當調用異步函數(shù)時,函數(shù)返回值會被 resolve 處理
    - 異步函數(shù)內部可以使用 await
    
    Await - 暫停異步函數(shù)的執(zhí)行 (var result = await someAsyncCall();)
    - 當使用在 Promise 前面時,await 等待 Promise 完成,并返回 Promise 的結果
    - await 只能和 Promise 一起使用,不能和 callback 一起使用
    - await 只能用在 async 函數(shù)中
    
修改函數(shù)如下
 module.exports =  async ()=>{
    let num = await setTimeout(() =>{
        return 1
        console.log(1)
    },1000)
    return num
}
然后編寫一個測試函數(shù)
const assert = require("assert")
const sum = require("../add")
describe("#add", () =>{
   it("測試異步", async () =>{
       let result = await sum()
       console.log(result)
       console.log(1)
   })
})

運行 npm test  查看結果.

Http測試

暫時還沒寫

karma
Karma的主要目標是為開發(fā)人員提供高效的測試環(huán)境。
環(huán)境是他們不必設置大量配置的環(huán)境,而是開發(fā)人員可以編寫代碼并從測試中獲得即時反饋的地方。
因為獲得快速反饋是讓您富有成效和創(chuàng)造力的原因。
安裝
建議的方法是在項目目錄中本地安裝Karma(以及項目需要的所有插件)。
# Install Karma:
$ npm install karma --save-dev

# Install plugins that your project needs:
$ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev
這將安裝karma,karma-jasmine,karma-chrome-launcher和jasmine-c到node_modules當前工作目錄,
也可以作為保存這devDependencies的package.json,
所以,任何其他開發(fā)項目工作會只有這樣做npm install才能得到所有這些依賴安裝。
# Run Karma:
$ ./node_modules/karma/bin/karma start

官網建議安裝一個全局的 方便命令
npm install -g karma-cli
如何集成到項目里面
Travis CI
Travis CI是一種流行的持續(xù)集成服務,它與您的Github存儲庫集成,
可在推送代碼時自動運行測試。通過向項目根目錄添加一個簡單的YAML文件來完成集成 ;
Travis和Github負責其余的工作。每當測試時,Travis結果將出現(xiàn)在您的Github拉取請求中,
您的歷史記錄將在其控制面板中提供。本文假設您已經擁有Travis帳戶。
配置
首先是去 travis官網去注冊一下 用GitHub賬號
然后回讀取你的GitHub項目開源的,里面有個設置 打開就好了.Travis會在代碼push時收到GitHub通知,然后自動獲取最新代碼,進行CI。
但是我們還是需要編寫一個.travis.yml文件來告訴Travis一些項目信息
language: node_js

node_js:  

     - 0.4  

     - 0.6
前端的配置


package.json 里面要配置個命令
"scripts": {
    "test": "mocha"
  },
  
  
 Mocha 已經安裝過全局了

然后push的時候就自動觸發(fā) npm test

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/102554.html

相關文章

  • 參加第二屆前端開發(fā)者年度大總結

    摘要:代表公司去參加今年的第二屆前端開發(fā)者年度大會,散會的時候,技術老大問我,今天感覺怎么樣,有什么收獲,當時就零零碎碎的回答了一些,不算完美趁著還記得點什么,在這里做個自我回顧總結,謹代表個人見解,有不當之處,或若涉及圖片隱私或者其它問題,煩請 代表公司去參加今年的 第二屆前端開發(fā)者年度大會,散會的時候,Team 技術老大問我,今天感覺怎么樣,有什么收獲,當時就零零碎碎的回答了一些,不算完...

    solocoder 評論0 收藏0
  • 【C++核心編程】黑馬程序員學習筆記(未完)(更新于2021/9/23)

    摘要:只讀目的是防止程序意外地修改了它的指令。全局區(qū)存放全局變量靜態(tài)變量和常量除了修飾的局部變量。程序結束時由操作系統(tǒng)釋放。由編譯器自動分配和釋放。注意不要返回局部變量的地址。 ...

    zhongmeizhi 評論0 收藏0
  • ICML 2015壓軸討論總結:6大神暢談深度學習的未來

    摘要:年的深度學習研討會,壓軸大戲是關于深度學習未來的討論。他認為,有潛力成為深度學習的下一個重點。認為這樣的人工智能恐懼和奇點的討論是一個巨大的牽引。 2015年ICML的深度學習研討會,壓軸大戲是關于深度學習未來的討論。基于平衡考慮,組織方分別邀請了來自工業(yè)界和學術界的六位專家開展這次圓桌討論。組織者之一Kyunghyun Cho(Bengio的博士后)在飛機上憑記憶寫下本文總結了討論的內容,...

    netScorpion 評論0 收藏0
  • 五位專家跟你講講為啥Python更適合做AI/機器學習

    摘要:研究人員和機器學習的作者對于數(shù)學和面向數(shù)據(jù)的人來說,非常容易使用。這對于機器學習和領域的工作是非常重要的。高級腳本語言非常適合人工智能和機器學習,因為我們可以快速移動并重試。 摘要: 為什么Python會在這股深度學習浪潮中成為編程語言的頭牌?聽聽大牛如何解釋吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...

    劉德剛 評論0 收藏0

發(fā)表評論

0條評論

姘存按

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<