jQuery を使用し、Google Chrome と Firefox で動作する Greasemonkey ユーザー スクリプトを作成しています。
これを行う方法のいくつかの例を見てきました.SOでの非常に良い答えも含まれています。そして、それらはすべて、別のコールバック関数をパラメーターとして渡す「注入スクリプト」関数を呼び出すことに要約されます。
そのコールバック関数内のコードは、jQuery
( $
) オブジェクトへのアクセスを含む「魔法」が発生する場所です。
このソリューションは正常に機能します。ただし、これを使用した場合の結果の 1 つは、コールバック関数の外部で定義された関数をその内部から呼び出すことができないということです。
function doSomethingImportantThatIWantToUnitTest(){ ... }
function with_jquery(callback) {
var script = document.createElement("script");
script.type = "text/javascript";
script.textContent = "(" + callback.toString() + ")(jQuery)";
document.body.appendChild(script);
};
with_jquery(function ($) {
doSomethingImportantThatIWantToUnitTest(); // <---- meh. Not defined!
});
そのため、コールバック関数内で
定義された関数のみを使用できます。ただし、これらの関数は、外部から呼び出すことはできません。特に、たとえばユニットテストから呼び出すことができず、これは私にとって非常に面倒です。
Chrome 用の Greasemonkey スクリプトを作成し、それを単体テストする方法はありますか?