對(duì)TypeScript庫(kù)進(jìn)行單元測(cè)試的方法
原文發(fā)布于2017年7月,為保證能正常運(yùn)行,其中部分命令進(jìn)行了調(diào)整。當(dāng)時(shí)TypeScript版本為2.x,但依舊具有借鑒意義。
單元測(cè)試能限制你庫(kù)中Bug的「生長(zhǎng)」。隨著編寫的庫(kù)越來(lái)越大,你不能總是手工測(cè)試每個(gè)特性。但你可以使用單元測(cè)試來(lái)測(cè)試每個(gè)特性,并且編寫起來(lái)并不難。下面展示如何在Typescript中設(shè)置單元測(cè)試!
步驟1:安裝用于單元測(cè)試的包
單元測(cè)試assert
(推斷)代碼中一些屬性。例如你有一個(gè)方法add(x,y)
,其應(yīng)該正確地將x
和y
相加,通過(guò)單元測(cè)試你可以進(jìn)行如下測(cè)試assert(add(3,4)).equals(7)
。
一些用于單元測(cè)試的庫(kù)提供了好用的assert
方法來(lái)執(zhí)行測(cè)試。我們這里使用了Mocha和Chai,通過(guò)如下命令進(jìn)行安裝:
npm i mocha @types/mocha chai @types/chai ts-node typescript --save-dev
步驟2:編寫第一個(gè)單元測(cè)試
假設(shè)你有以下單元:
typescript-library/src/math.ts
export function add(x: number, y: number) { return x + y; }
那對(duì)應(yīng)的單元測(cè)試可能是這樣的:
typescript-library/src/math.test.ts
import { add } from './math'; import * as mocha from 'mocha'; import * as chai from 'chai'; const expect = chai.expect; describe('My math library', () => { it('should be able to add things correctly' , () => { expect(add(3,4)).to.equal(7); }); });
步驟3:運(yùn)行單元測(cè)試
您可以使用以下命令運(yùn)行測(cè)試:
./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts
然后應(yīng)該會(huì)在控制臺(tái)中看到一個(gè)輸出,如下所示:
您可以將這個(gè)長(zhǎng)命令放入package.json
中轉(zhuǎn)換成"scripts:{"test":"…"}"
然后用npm test運(yùn)行測(cè)試。也就是說(shuō)此時(shí)的package.json
應(yīng)該是:
{ "devDependencies": { "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "chai": "^4.2.0", "ts-node": "^8.3.0", "mocha": "^6.1.4" }, "scripts": { "test": "./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts" } }
如果您想運(yùn)行單獨(dú)的某個(gè)單元測(cè)試,可以用./node_modules/mocha/bin/mocha --reporter spec --grep "TestName" --require ts-node/register src/**/*.test.ts
?!癟estName”可以是任何的describe
值,在本例中就如./node_modules/mocha/bin/mocha --reporter spec --grep "My math library" --require ts-node/register test/**/*.test.ts
。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實(shí)現(xiàn)實(shí)時(shí)更新系統(tǒng)時(shí)間的實(shí)例代碼
本文給大家分享javascript實(shí)現(xiàn)實(shí)時(shí)更新系統(tǒng)時(shí)間的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-04-04javascript模擬評(píng)分控件實(shí)現(xiàn)方法
這篇文章主要介紹了javascript模擬評(píng)分控件實(shí)現(xiàn)方法,涉及javascript操作頁(yè)面元素與樣式的相關(guān)技巧,需要的朋友可以參考下2015-05-05使用iframe window的scroll方法控制iframe頁(yè)面滾動(dòng)
在頁(yè)面中如何控制內(nèi)嵌的iframe滾動(dòng)呢?方法是使用iframe window的scroll方法,大家可以參考下面的示例2014-03-03JavaScript實(shí)現(xiàn)圖片懶加載(Lazyload)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)圖片懶加載(Lazyload)的相關(guān)資料,需要的朋友可以參考下2016-11-11學(xué)習(xí)JSON.stringify的9大特性和轉(zhuǎn)換規(guī)則
本文介紹JSON.stringify9大特性和轉(zhuǎn)換規(guī)則,JSON.stringify()方法將一個(gè)JavaScript對(duì)象或值轉(zhuǎn)換為?JSON?字符串,如果指定了一個(gè)replacer?函數(shù),則可以選擇性地替換值,或者指定的replacer是數(shù)組,則可選擇性地僅包含數(shù)組指定的屬性,更多內(nèi)容需要的小火煸可以參考下面溫行內(nèi)容2022-02-02js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的方法
這篇文章主要介紹了js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的方法,以實(shí)例形式講述了js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02