我正在 Rails 3.1 后端构建一个backbone.js 应用程序。我正在使用 CoffeeScript 编写主干类,并使用 Jasmine(通过 jasmine-headless-webkit)进行测试。
给定以下(部分)树:
.
├── app
│ ├── assets
│ │ ├── javascripts
│ │ │ └── views
│ │ │ ├── avia_view.js.coffee
├── spec
│ ├── javascripts
│ │ └── views
│ │ └── avia_view_spec.js.coffee
...我希望
avia_view_spec.js.coffee
了解 Avia.AviaView
,它在 avia_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)
我的
jasmine.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
的内容,但我不完全确定如何加载。在 src_files
的 jasmine.yml
部分添加显式引用似乎没有什么区别......有人可以告诉我我在这里做错了什么吗?我怀疑这很简单......
最佳答案
在没有看过您的大部分代码的情况下,我怀疑是因为 CoffeeScript 的函数包装( docs )。您需要确保将要使用的所有符号导出到您可以找到的地方( here 对此进行了深入讨论)。
编辑: here's 关于这个主题的另一个冗长和理论但很好的文档。
关于ruby-on-rails-3.1 - Jasmine 规范找不到在 CoffeeScript 中定义的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8310329/