フロントエンドユニットテスト&Mocha指北
2730 ワード
ユニット-テストとは?
したがって、ユニットテストは、一般的には、プログラムの独立したユニットごとにテストされ、プログラムを構成する各モジュールの正確性を保証し、プログラム全体の正確な運行を保証することである.
なぜユニットテストを書くのですか?
ユニットテストはフロントエンドではあまり普及していません.最初はフロントエンドも「UI」に偏っていましたが、nodeの発展に伴い、「UI」ではないフロントエンドコードが増え、チームも開発に参加する人が増えています.システムが複雑になったり、あなたのブロックがnpmに提出されたりすると、間違いは基本的にGGになります.あるいはあなたはこのように考えて、テストは逃げられないで、devの上でテストして、prodの上でテストして、どのようにすべてテストしなければならなくて、その上毎回提出してすべてテストして、どうして自動テストを書かないのですか.私も多くのプログラマーが書き終わって走って見る習慣があると信じていますが、ユニットテストのロゴはconsoleに直接印刷され、コンパイルや梱包の時間も省け、皆さんの心理的なニーズ(わいせつな顔)を満たすことができます.一挙両得ですね.
この「Mocha」を乾かした
mochaはjsテストフレームワークであるほか、類似のテストフレームワークにはJasmine、Karma、Tapeなどがありますが、なぜMochaを紹介するのでしょうか.これしか分からないからです.コードをつける前に2つの概念を普及させなければなりません
例を挙げる
// add.js
function add(a, b) {
return a + b
}
module.exports = add
通常、テストスクリプトはaddなどのテストソースと同名である.jsのテストスクリプトはaddです.test.js
// add.test.js
const add = require('./add.js')
const expect = require('chai').expect
describe(' ', function() {
it('1 + 1 2', function() {
expect(add(1, 1)).to.be.equal(2)
})
it(' Number', function() {
expect(add(1, 1)).to.be.a('number')
})
})
上のコードブロックはテストスクリプトであり、独立して実行することができ、テストスクリプトには1つ以上の
describe
ブロックが含まれ、各describe
ブロックには複数のit
ブロックが含まれなければならない.describe
はテストキットであり、この方法は2つのパラメータを伝達する必要があり、1つ目はテストキットの名前(' ')
であり、2つ目は実行関数である.it
ブロックは試験例であり、単独の試験を表し、試験の最小単位であり、第1のパラメータは試験例の名前('1+1は2')であり、第2のパラメータは実行関数である.その後terminalで
mocha add.test.js
を実行する$ mocha add.test.js
√ 1 + 1 2
√ Number
2 passing (12ms)
add.js
を変えたら// add.js
function add(a, b) {
return a * b
}
module.exports = add
そして
mocha add.test.js
を実行します$ mocha add.test.js
√ 1 + 1 2
1) Number
1 passing (8ms)
1 failing
1) Number:
AssertionError: expected 2 to equal 3
+ expected - actual
-2
+3
at Context.it(add.test.js:6:27)
ここでは,どのテスト用例が間違っているのか,また間違っている位置が明らかであり,開発時に開発者が誤りを特定しやすい.
小結
上記の簡単な例から,mochaを用いた自動化テストの実現は簡単であることが分かる.前期開発ではユニットテストを書くのに少し時間がかかりますが、後で提供される利便性はそれを補うのに十分です.