質問: 普段使っている、Javaであれば、コードを修正する、モックライブラリーを使う、出力を変更するなど、色々な解決策が思い浮かびますが、JavaScriptは初心者なので、この先、どの方向に進めばよいのか判断できずにいます。 幅広いご意見を、お待ちしております。
回答: 関数の第二引数(必須引数の後)には、オプション引数をオブジェクト`{}`を渡せるのが一般的なメソッドの実装方法ですが、ここにモック用のプロパティを用意するのが簡単な解決方法です。モックとしてsinonを使用します。 下記の例では、第二引数にモック`{log}`を与え、実行された際の引数を確認するものです。 ``` var sinon = require('sinon'); var foo = function(str, opts) { opts = opts || {}; opts.log = opts.log || console.log.bind(console); if(str == null) { opts.log("str is null"); } else { opts.log(str); } } var log = sinon.spy(); foo('test', {log: log}); console.log(log.args[0]); // test ``` 他の方法としては`child_process.exec`を利用することでしょうか。 参考 * 標準出力のテストを書く - qiita/59naga