ジンジャー研究室

長めのつぶやき。難しいことは書きません。

proxyquireでNode.jsのrequireをモックする

発端

React+Fluxのアプリのテストをするのに、requireのモックが必要だった。 だけどJest使いたくない。

そこでこれを使う。

github.com

簡単な使い方

something.js

module.exports = 'music';

love.js

var something = require('./something.js');

console.log('I love ' + something + '!');

index.js

var proxyquire = require('proxyquire');

require('./love.js');// => I love music!

proxyquire('./love.js', {
  './something.js': 'shit'
});// => I love shit!

require('./something.js');をモックして何でも言わせちゃう。

ユニットテスト用途には十分

requireで指定する文字列の曖昧さを許容しないのがちょっと微妙だけど、ユニットテストに使う分にはまぁ問題にはならない。

呼ばれた回数をカウントしたり色々したい場合は、Sinon.jsを使うのが便利。