我正在使用 grunt-contrib-jasmine 插件运行 BDD 测试。当我生成 _SpecRunner.html 并通过 Chrome 运行测试时,一切都很好。当我通过 PhantomJS 运行测试时,我收到指示 jQuery 未加载的错误消息。
我正在测试的文件使用 LABjs 来加载 jQuery、jQueryUI 和一些其他依赖于它们的文件。此标记将放置在第三方站点上,因此需要此脚本来加载 jQuery。
(function(){
function callback() {
$LAB
.script('path_to_jQuerry').wait()
.script('path_to_jQueryUI').wait()
.script('files_that_use_jQuery').wait();
}
loadJS('path_to_LABjs', callback);
})();
假设 loadJS 成功加载了 LABjs。就像我说的,当我通过浏览器对该文件运行测试时没有错误,但是通过 PhantomJS 使用 grunt-contrib-jasmine 在我的任何测试完成之前我收到以下错误:
TypeError: 'undefined' 不是函数(评估 '$.publish("foo")')
产生的代码如下:
(function($) {
$.publish('foo');
})(jQuery);
我最初的想法是 PhantomJS 与 LABjs 脚本加载器不兼容,或者代码被“评估”但 PhantomJS 在错误的时间。窥探 grunt-contrib-jasmine、jasmine 和 phantomjs 代码并没有让我有所收获。
任何评论表示赞赏。