既存のNodeアプリのテストを書いていて思ったことをメモ。 書いてるうちに別にNode.jsに限った話じゃなくて、JavaScript全般に言える話じゃんと思ったけどまいっか。 Node.jsで書くアプリは中の処理で非同期API使われてると、テストを書くのがとても難しいというかめんどくさい。 例えばfsモジュールで非同期でファイル書いてる処理があって、もし書き込みに失敗したらエラーイベントを投げて上のレイヤーで処理する、みたいなのがあるとする。 // HogeクラスはEventEmitterを継承している Hoge.prototype.writeFile = function(file, data) { var self = this; fs.writeFile(file, data, function(err) { if (err) { self.emit('error.file', e