node.jsで使える非同期コントロールフローライブラリ nue その5
単体テストのしやすさって重要ですよね。ここでflowがネスト可能であることが効果を発揮します。テストライブラリにmochaを使った場合のサンプルコードはこのようになります。
var flow = require('nue').flow; var fs = require('fs'); var assert = require('assert'); // test対象のflow var myflow = flow( function (path1, path2) { fs.readFile(path1, this.async()); fs.readFile(path2, this.async()); }, function (data1, data2) { this.next(data1.length, data2.length); } ); // test対象のfunction function myFunction(path1, path2) { fs.readFile(path1, this.async()); fs.readFile(path2, this.async()); } describe('nueは', function () { it('flowをテストできる', function (done) { flow( myflow, // flowで囲ってテスト対象の下にassertするfunctionを書く function (data1, data2) { assert.ok(data1); assert.ok(data2); done(); } )('path1', 'path2'); }); it('functionをテストできる', function (done) { flow( myFunction, // flowで囲ってテスト対象の下にassertするfunctionを書く function (data1, data2) { assert.ok(data1); assert.ok(data2); done(); } )('path1', 'path2'); }); });
flowとfunctionをテストできるのですが、それらをテスト用のflowで囲んで結果をassertします。最後にmochaが提供するdone関数を呼んで終わりです。
なんか思いつくままに書いていますが、ソースコードはここにあります。