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関数を呼んで終わりです。


なんか思いつくままに書いていますが、ソースコードはここにあります。