テストの時だけ公開したい関数
モジュールを書いていて、ユニットテストの時はテストしたいので公開して、それ以外の普通の時は公開しない関数を書きたいと思った。
C++あまりよく知らないのだけど、テストの時だけfriendなprivate関数というか。
で、以下のような感じのコードを思いついたのだけど、もっとおしゃれな感じ(?)な書き方ないのかなーと思った。
function aaa() { console.log('aaa'); } function bbb() { console.log('bbb'); } module.exports = (process.env.NODE_ENV === 'test') ? { aaa: aaa, bbb: bbb } : { aaa: aaa };
$ node > a.aaa [Function: aaa] > a.bbb undefined $ NODE_ENV=test node > a.aaa [Function: aaa] > a.bbb [Function: bbb]
まあ、これが一番わかりやすいのかなあ。
で、テストのときは
package.json
"scripts": { "test": "NODE_ENV=test ./node_modules/.bin/mocha" }
とか書いておいて、
$ npm test
で普段は公開してない関数をテストする、というかなんというか。