【发布时间】:2014-04-02 01:55:43
【问题描述】:
我正在使用 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 代码并没有让我有所收获。
感谢任何评论。
【问题讨论】:
标签: gruntjs jasmine phantomjs grunt-contrib-jasmine