Ruby on rails 3.1 Jasmine规范找不到CoffeeScript中定义的类
我正在Rails 3.1后端上构建一个backbone.js应用程序。我正在使用CoffeeScript编写主干类,并使用Jasmine(通过Jasmine headless webkit)进行测试 给定以下(部分)树: 。。。我希望Ruby on rails 3.1 Jasmine规范找不到CoffeeScript中定义的类,ruby-on-rails-3.1,coffeescript,jasmine,Ruby On Rails 3.1,Coffeescript,Jasmine,我正在Rails 3.1后端上构建一个backbone.js应用程序。我正在使用CoffeeScript编写主干类,并使用Jasmine(通过Jasmine headless webkit)进行测试 给定以下(部分)树: 。。。我希望avia\u view\u spec.js.coffee了解avia.AviaView,它在avia\u view.js.coffee中定义 但是,通过运行bundle exec jasmine headless webkit,我得到了以下输出: Running J
avia\u view\u spec.js.coffee
了解avia.AviaView
,它在avia\u view.js.coffee
中定义
但是,通过运行bundle exec jasmine headless webkit
,我得到了以下输出:
Running Jasmine specs...
F
Avia.AviaView render creates a new MatricesView . (/home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee:10)
ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~5)
ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~10)
Myjasmine.yml
包含以下内容:
src_files:
- public/javascripts/prototype.js
- public/javascripts/effects.js
- public/javascripts/controls.js
- public/javascripts/dragdrop.js
- public/javascripts/application.js
- public/javascripts/**/*.js
我想我需要告诉Jasmine加载avia_view.js.coffee的内容,但我不完全确定如何加载。在jasmine.yml
中的src_文件
部分添加显式引用似乎没有什么区别
有人能告诉我我做错了什么吗?我怀疑它很简单…如果没有看过您的大部分代码,我会怀疑它是因为CoffeeScript的函数包装()。你需要确保你想要使用的所有符号都被导出到你能找到它们的地方(这是一个彻底的讨论)
编辑:关于这个主题的另一篇长篇理论性但很好的文档。尝试将其添加到您的
avia_view.js.coffee
(exports ? this).Avia = Avia
有关详细说明,请参阅
或者尝试
我们遇到了同样的问题;我强烈建议这是问题之一;我在一个未包含的.js文件中定义了我的Avia“名称空间”。谢谢:-)
(exports ? this).Avia = Avia
window.Avia = Avia