Minify した JS はコンパイル時の最適化によってコードパスが変更されていることがあります。 テストによっては正しいコードパスで実行されているか確認したいこともあるので、そのようなテストは Minify する前の JS で行います。
Minify しても export されているようなメソッドなどのテストは、どちらでも実行できるはずですので両方で実行するようにします。
コードパスをテストする場合、Minify する前のファイルをテストすることになります。
そういった場合、複数のファイルを扱うことになることが多いのですが、Closure Library の Minify する前の依存関係解決は document.head
に script
を挿入する形式なのでそのままでは動きません。
そこで、以下のような対策をすることで簡単にテストすることができます。
Closure Library では goog.require()
や goog.provide()
、 goog.inherits()
などの重要な機能は base.js というファイルで定義されています。
私は Closure Library のこの機能しか使わない場合は、 closure-primitives
というディレクトリに base.js を depswriter.py などのスクリプトと一緒にコピーして、余計なファイルをリポジトリにおかないようにしています。
また、依存関係を解決する deps.js も予め生成しておき、それも読み込むようにします。
libs: [
"closure-primitives/base.js",
"deps.js"
]
あとは読み込まれる可能性のあるファイルをすべてテスト中に読み込めるようにしておきます。
resources: [
"src/**/*.js"
]
すべての依存関係は goog.dependencies_.nameToPath
に入っているので、これを利用して goog.provide()
されたすべてのファイルを正しい順序で goog.require()
します。
ただし、private なプロパティへアクセスしているので、今後の変更でもしかしたら使用できなくなるかもしれません。
(function() {
for (var key in goog.dependencies_.nameToPath) {
goog.require(key);
}
})();