ReferenceError:运行JasmineHeadlessWebkit时找不到变量:$

时间:2013-04-22 21:02:57

标签: jquery coffeescript jasmine jasmine-jquery jasmine-headless-webkit

至少在过去的两个小时里,我一直试图找到答案而没有任何运气。我希望这里有人可以提供帮助。

使用JasmineHeadlessWebkit运行我的Jasmine规范时,我得到了这个ReferenceError: Can't find variable: $

奇怪的是,这只发生在我说

$ ->
  game.init()

在我的game.coffee文件中。

我可以$继续使用game.coffee而不会出现任何问题window.game = init: -> $('.gamelayer').hide() $('#gamestartscreen').show() 。例如:

specs/javascripts/helpers/

这根本不是问题。

此外,测试在Chrome中运行正常。

所以,我假设这与jQuery没有及时加载有关,但我无法弄清楚为什么。

我在jasmine.ymlhelpers中有jQuery我在spec_filessrc_files之前提到了{{1}}但是这似乎并不是真的有所作为。

所以,如果有人知道如何在运行Jasmine的规范时确保jQuery完全加载,我真的很感激任何帮助。

另外,如果您需要任何其他信息,请与我们联系。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试两种解决方案:

第一个延迟game.init()等待加载jQuery:

function initJQuery() {
    if (typeof(jQuery) == 'undefined') {
        setTimeout("initJQuery()", 50);
    } else {
        game.init();
    }
}

第二个调用jQuery函数来防止与库冲突(在代码的开头运行它):

jQuery.noConflict()

你可以尝试,但我不确定这是你的最佳解决方案。注意使用这个解决方案,你必须将所有'$'改为'jQuery'

答案 1 :(得分:0)

我也遇到了这个问题。我通过更改我的jasmine.yml来加载jquery,然后加载其余的javascript文件来修复它:

src_files:
  - public/js/jquery.js
  - public/js/**/*.js