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などの導入を考える