Nodeで最低限のテストができるようにするよ。何も知らなくても15分くらいあればテストの最初の一歩をふみだせるように記事を書いたよ。
概要
-
npm test
でテストが走るように設定 - テストコード作成
Step#01 初期設定
~/letstest
をプロジェクトディレクトリにしよう。配下にtest
ディレクトリを作ってここにテストコードを置く。ディレクトリ名をtest
にすることで、テストツールがテストコードの場所を見つけることができる。テストツールはmocha
が普通に使われているのでこれをインストールする。
$ mkdir -p ~/letstest/test
$ cd ~/letstest
$ npm init -y
$ npm install -save mocha
npm init -y
コマンドを打つと、package.json
が生成される。この中のscripts.test
フィールドが、npm test
を打つ時のコマンドになる。以下のように書き換えれば、mocha
でテストが実行できる準備ができる。
... (前略)
"scripts": {
"test": "mocha"
... (後略)
Step#02: テストの作成
同期関数のテストは例外がでなければ成功とみなされる。アサーションは、当面Node標準のassertでよい。以下は典型的なコード。describe, it
とかはどっからきてるの?みたいな疑問があるが、mochaのコンテキストから来ている(のでこのjsファイルを直接実行しようとしてもエラーとなる。npm test
経由で実行しよう)。
const assert = require('assert')
describe('SyncTest', function() {
it('Equality', function() {
assert(1+1===2)
assert.equal(1+1, 2)
})
})
非同期関数のテストは二種類ある。コールバック型とPromise型。コールバック型のテストでは、コールバックdone
が無事呼び出されたらテストが成功となる。Promise型では、最終的にresolveされるPromiseがreturnされたらテストは成功となる。典型的には以下のコード。
const assert = require('assert')
describe('AsyncTest', function() {
it ('WithCallback', function(done) {
const targetFunc = cb=>{cb()}
targetFunc(done)
})
it ('WithPromise', function() {
return new Promise(r=>r('OK'))
})
it ('A lot more test With chai-promised etc')
})
次のステップ
- もう少し複雑なテストケースをmochaのドキュメントで調べる
- アサーションを強化できる
chai
,chai-as-promised
や、should
、expect
などの導入を考える