Jestというfacebookが開発したテストフレームワークを使って非同期な処理のテストをしてみます。
準備
まずはJestの準備をします。
npm install jest
プログラム
今回ファイルへの非同期書き込みをして、ファイルに書き込んだデータが入っているかをテストしてみます。
// app.js
const fs = require('fs')
module.exports.writeFile = new Promise((resolve, reject)=>{
fs.writeFile('data.txt', 'hello', (err)=>{
if(err) reject()
resolve()
})
})
テストプログラム
test関数のcallbackで引数(done)を受け取って実行することで、done()
が実行されるタイミングまでテスト終了を待ってくれるようになります。
// app.test.js
const fs = require('fs')
const app = require('./app')
test('create data file', (done) => {
app.writeFile.then(()=>{
const data = fs.readFile('data.txt', 'utf-8', (err, data)=>{
expect(data).toEqual('hello')
done()
})
})
})