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

資訊專欄INFORMATION COLUMN

使用mocha前端單元測(cè)試

hidogs / 923人閱讀

摘要:需求因?yàn)橹暗捻?xiàng)目沒(méi)有涉及到測(cè)試這一塊沒(méi)有完整的測(cè)試體系。最近看了阮一峰老師的測(cè)試框架實(shí)例教程來(lái)總結(jié)一下。小試牛刀具體的教程在阮一峰老師的博客上有介紹,這里就不再贅述。

Mocha

需求

因?yàn)橹暗捻?xiàng)目沒(méi)有涉及到測(cè)試這一塊,沒(méi)有完整的測(cè)試體系。最近看了阮一峰老師的測(cè)試框架 Mocha 實(shí)例教程
來(lái)總結(jié)一下。

小試牛刀

具體的教程在阮一峰老師的博客上有介紹,這里就不再贅述。
以自己的github上的小工具klocation.js做了個(gè)示例:

/**
 * Created by caozheng on 2016/11/28.
 */
require("./../KLoction");
var expect = require("chai").expect;


(function (win) {
    var testUrl = "https://github.com/karzanOnline?a=1";
    describe("constructor", function () {
        var testResult =  KLocation(testUrl);

        describe("#output", function () {
            it("return value is an object", function () {
                expect(testResult).to.be.an("object")
            });
            it("property url is string", function () {
                expect(testResult.url).to.be.a("string")
            });
            it("property port is number", function () {
                expect(testResult.port).to.be.a("number")
            });
            it("property host is string", function () {
                expect(testResult.host).to.be.a("string")
            });
            it("property protocol is string", function () {
                expect(testResult.protocol).to.be.a("string")
            });
            it("property pathname is string", function () {
                expect(testResult.pathname).to.be.a("string")
            });
        });

        describe("#method", function () {
            it("getParam", function () {
                expect(testResult.getParam()).to.be.deep.equal({a : "1"})
            });
            it("getProtocol", function () {
                expect(testResult.getProtocol()).to.be.equal("https:")
            });
            it("getHost", function () {
                expect(testResult.getHost()).to.be.equal("github.com")
            });
            it("getPort", function () {
                expect(testResult.getPort()).to.be.empty;
            });
            it("getPathname", function () {
                expect(testResult.getPathname()).to.be.equal("/karzanOnline")
            })

        })

    })

})(this);

在github上還要去https://travis-ci.org注冊(cè)一下,然后通過(guò)配置.travis.yml文件(確定使用的語(yǔ)言和node的版本),如果測(cè)試通過(guò)就會(huì)生成一個(gè)圖標(biāo)

然后把url放到README.md就可以了。

expect(經(jīng)常用到的方法)

// 相等或不相等
expect(4 + 5).to.be.equal(9);
expect(4 + 5).to.be.not.equal(10);
expect(foo).to.be.deep.equal({ bar: "baz" });

// 布爾值為true
expect("everthing").to.be.ok;
expect(false).to.not.be.ok;

// typeof
expect("test").to.be.a("string");
expect({ foo: "bar" }).to.be.an("object");
expect(foo).to.be.an.instanceof(Foo);

// include
expect([1,2,3]).to.include(2);
expect("foobar").to.contain("foo");
expect({ foo: "bar", hello: "universe" }).to.include.keys("foo");

// empty
expect([]).to.be.empty;
expect("").to.be.empty;
expect({}).to.be.empty;

// match
expect("foobar").to.match(/^foo/);

mochawesome

這里阮一峰老師給的code是(三個(gè)步驟改進(jìn)一下)

$ npm install --save-dev mochawesome
$ ../node_modules/.bin/mocha --reporter mochawesome

首先安裝mochawesome必須!但是第二步可以通過(guò)package.json來(lái)設(shè)置,由于node_modules/.bin/目錄會(huì)在運(yùn)行時(shí)加入系統(tǒng)的PATH變量,因此在運(yùn)行npm時(shí),就可以不帶路徑,直接通過(guò)命令來(lái)調(diào)用這些腳本。

根目錄創(chuàng)建test文件(mocha.opts配置項(xiàng)加一下)

放入測(cè)試的腳本

package.json配置scripts

"scripts": {
    "test": "mocha --reporter mochawesome"
  },

將會(huì)在同級(jí)目錄生成mochawesome-reports,訪問(wèn)html即可。

異步測(cè)試

var fetch = require ("node-fetch");
var expect = require("chai").expect;

it("異步請(qǐng)求應(yīng)該返回一個(gè)對(duì)象", function (done) {
    return fetch("https://api.github.com")
        .then(function (res) {
          return res.json()
        }).then(function (json) {
          expect(json).to.be.an("object");
          done();
        })
    })

測(cè)試用例管理

it.only :如果測(cè)試代碼中有only,那么只有帶有only方法的測(cè)試用例會(huì)運(yùn)行。

it.skip :與only相反

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91147.html

相關(guān)文章

  • 前端單元測(cè)試 實(shí)現(xiàn)教程 mocha + mochawesome + istanbul + sinon

    摘要:為什么要寫(xiě)單元測(cè)試減少提高代碼質(zhì)量,保證你的代碼是可測(cè)試的放心重構(gòu)當(dāng)你每個(gè)方法都寫(xiě)了單元測(cè)試的時(shí)候,你每一個(gè)改動(dòng)都會(huì)影響相應(yīng)的單元測(cè)試,這樣你不用費(fèi)盡心思的考慮哪里會(huì)有影響,特別是復(fù)雜項(xiàng)目或非核心功能不易被測(cè)試到,從而導(dǎo)致的產(chǎn)生。 為什么要寫(xiě)單元測(cè)試 減少bug 提高代碼質(zhì)量,保證你的代碼是可測(cè)試的 放心重構(gòu) 當(dāng)你每個(gè)方法都寫(xiě)了單元測(cè)試的時(shí)候,你每一個(gè)改動(dòng)都會(huì)影響相應(yīng)的單元測(cè)試,這...

    AaronYuan 評(píng)論0 收藏0
  • 前端單元測(cè)試探索

    摘要:?jiǎn)卧獪y(cè)試的首要目的不是為了能夠編寫(xiě)出大覆蓋率的全部通過(guò)的測(cè)試代碼,而是需要從使用者調(diào)用者的角度出發(fā),嘗試函數(shù)邏輯的各種可能性,進(jìn)而輔助性增強(qiáng)代碼質(zhì)量測(cè)試是手段而不是目的。 本文已發(fā)布在稀土掘金 轉(zhuǎn)載請(qǐng)注明原文鏈接:https://github.com/ecmadao/Co... 雖然很多公司有自己的測(cè)試部門,而且前端開(kāi)發(fā)大多不涉及測(cè)試環(huán)節(jié),但鑒于目前前端領(lǐng)域的快速發(fā)展,其涉及面越來(lái)...

    陳江龍 評(píng)論0 收藏0
  • 測(cè)試你的前端代碼 - part2(單元測(cè)試

    摘要:?jiǎn)卧獪y(cè)試上一節(jié)有討論過(guò),單元測(cè)試就是以代碼單元為單位進(jìn)行測(cè)試,代碼單元可以是一個(gè)函數(shù),一個(gè)模塊,或者一個(gè)類。單元測(cè)試是最容易理解也最容易實(shí)現(xiàn)的測(cè)試方式。在寫(xiě)單元測(cè)試的時(shí)候,盡量將你的單元測(cè)試獨(dú)立出來(lái),不要幾個(gè)單元互相引用。 showImg(https://segmentfault.com/img/remote/1460000008823416?w=997&h=350); 本文作者:G...

    daydream 評(píng)論0 收藏0
  • 測(cè)試你的前端代碼 - part2(單元測(cè)試

    摘要:?jiǎn)卧獪y(cè)試上一節(jié)有討論過(guò),單元測(cè)試就是以代碼單元為單位進(jìn)行測(cè)試,代碼單元可以是一個(gè)函數(shù),一個(gè)模塊,或者一個(gè)類。單元測(cè)試是最容易理解也最容易實(shí)現(xiàn)的測(cè)試方式。在寫(xiě)單元測(cè)試的時(shí)候,盡量將你的單元測(cè)試獨(dú)立出來(lái),不要幾個(gè)單元互相引用。 showImg(https://segmentfault.com/img/remote/1460000008823416?w=997&h=350); 本文作者:G...

    shadajin 評(píng)論0 收藏0
  • 前端臨床手札——單元測(cè)試

    摘要:感覺(jué)不能這樣下去就學(xué)寫(xiě)一下單元測(cè)試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。具體執(zhí)行的測(cè)試用例實(shí)現(xiàn)代碼。測(cè)試工具斷言庫(kù)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)及測(cè)試框架入門學(xué)習(xí) 最近博主工作是和另一枚后端合作,但是經(jīng)常發(fā)現(xiàn)他寫(xiě)的接口出錯(cuò),苦逼連連。感覺(jué)不能這樣下去就學(xué)寫(xiě)一下單元測(cè)試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。 經(jīng)過(guò)博主一番查找,貌似被推薦比較多的有mocha和chai,下面記錄簡(jiǎn)...

    kid143 評(píng)論0 收藏0
  • 前端臨床手札——單元測(cè)試

    摘要:感覺(jué)不能這樣下去就學(xué)寫(xiě)一下單元測(cè)試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。具體執(zhí)行的測(cè)試用例實(shí)現(xiàn)代碼。測(cè)試工具斷言庫(kù)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)及測(cè)試框架入門學(xué)習(xí) 最近博主工作是和另一枚后端合作,但是經(jīng)常發(fā)現(xiàn)他寫(xiě)的接口出錯(cuò),苦逼連連。感覺(jué)不能這樣下去就學(xué)寫(xiě)一下單元測(cè)試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。 經(jīng)過(guò)博主一番查找,貌似被推薦比較多的有mocha和chai,下面記錄簡(jiǎn)...

    godlong_X 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<