babel-plugin-rewire の使い方がよくわかんなかった時の話

webpack のプロジェクトで jest を使ってテストを書こうとした時に、rewireを使ってexportしていない関数をテストしようとしたらなんか使えなかったぽい時にbabel-plugin-rewireを使おうとした時の話。

 

やったこと

 

npm install --save-dev babel-plugin-rewire

 

.babelrcに以下を追加

 

"env": { "test": { "plugins": [ "babel-plugin-rewire" ] } }

 

テストでこんな感じに書く

 

import { __RewireAPI__ as テストするモジュール_RewireAPI } from 'テストするモジュールのパス'

 

// export してない関数とか取り出すとき

const exportしてない関数 = テストするモジュール_RewireAPI.__get__('exportしてない関数')

 

exportしてない関数()

 

// exportしてない変数に値入れたりする時

テストするモジュール_RewireAPI.__set__({ exportしてない変数: 'unco' })

 

こんな感じでできましたとさ。

テストのためだけにexportするのは気持ち悪いので、これを使って気持ちよくなれました。