成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用mocha前端單元測試

hidogs / 881人閱讀

摘要:需求因為之前的項目沒有涉及到測試這一塊沒有完整的測試體系。最近看了阮一峰老師的測試框架實例教程來總結(jié)一下。小試牛刀具體的教程在阮一峰老師的博客上有介紹,這里就不再贅述。

Mocha

需求

因為之前的項目沒有涉及到測試這一塊,沒有完整的測試體系。最近看了阮一峰老師的測試框架 Mocha 實例教程
來總結(jié)一下。

小試牛刀

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

/**
 * 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注冊一下,然后通過配置.travis.yml文件(確定使用的語言和node的版本),如果測試通過就會生成一個圖標(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是(三個步驟改進(jìn)一下)

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

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

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

放入測試的腳本

package.json配置scripts

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

將會在同級目錄生成mochawesome-reports,訪問html即可。

異步測試

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

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

測試用例管理

it.only :如果測試代碼中有only,那么只有帶有only方法的測試用例會運行。

it.skip :與only相反

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91147.html

相關(guān)文章

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

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

    AaronYuan 評論0 收藏0
  • 前端單元測試探索

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

    陳江龍 評論0 收藏0
  • 測試你的前端代碼 - part2(單元測試

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

    daydream 評論0 收藏0
  • 測試你的前端代碼 - part2(單元測試

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

    shadajin 評論0 收藏0
  • 前端臨床手札——單元測試

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

    kid143 評論0 收藏0
  • 前端臨床手札——單元測試

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

    godlong_X 評論0 收藏0

發(fā)表評論

0條評論

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