jQueryが利用可能な私のソリューションは次のとおりです。
テストを実行する前に、構成ファイルをロードします。
var jasmine_deferreds = [];
// Setup an event to fire on the document
// I actually did this with native code rather than jquery because
// I wanted to minimize jquery usage
// ....
// setTimeout so all files loaded after this will finish registering their requires
setTimeout( function() {
$.when.apply( null, jasmine_deferreds ).then( function() {
// Fire event that was created
});
}, 5 );
延期された配列をどのように構築し、それらを解決するかはあなた次第です。私は基本的に配列にプッシュし、要求が行われたときに解決しました。requireを、完了時に自動的に解決することを認識している独自のバージョンでラップしたので、各テストで手動でプッシュして解決する必要はありません。
次に、ファントムファイルでこれを行います。
page.evaluate ->
mylistener = ( document ) -> jasmine.getEnv().execute();
document.addEventListener( 'test_ready_event', mylistener, false);
これにより、必要なモジュールがすべてロードされていることがわかりsetTimeout
ます。ロードするファイルが多すぎると、短すぎる可能性があります。setTimeout
私が使用しているものは、メインのコールスタックが完了した後にのみ起動するために使用されているため、安全です。本当に時間は気にしません。