ReadableStreamのpipeの挙動をテストする

先日の TDDBC1.0 の写経お題「FizzBuzz」でしたが、JSer(というか NodeJSer)なら Stream 実装するのも1つのやり方だと思います。

readableなStreamで「1, 2, Fizz, ...」というデータを流して、writableなStream(例えば、process.stdout)で表示させる、みたいな。

書き方としては、こんな書き方ができると思う。

(new FizzBuzzStream(finish_number)).pipe(process.stdout);

と言ったところで、本題。

問題は、FizzBuzzStream モジュールを開発しようとする場合、当然 pipeを通した時の挙動が期待したものかをテストしなくちゃいけないんだけど、どうするのがいいんだろう?

なかなかベターな解答が思い浮かばないので、readableStreamが(pipeを使って)writableStreamをハンドルした時、流れてくるデータを 外部に書きだす代わりに バッファに書き込んで、適時チェックするようにした。

その時に、内部のバッファに書き込む テスト用のWritableStream