我正在 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)
My 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
I think我需要告诉 Jasmine 加载内容avia_view.js.coffee
但我不完全确定怎么做。在中添加显式引用src_files
部分在jasmine.yml
似乎没有什么区别......
有人可以告诉我我在这里做错了什么吗?我怀疑这很简单......
在没有看过你的大部分代码的情况下,我会怀疑它是因为 CoffeeScript 函数包装(docs http://jashkenas.github.com/coffee-script/#lexical_scope)。您需要确保您想要使用的所有符号都导出到您可以获取它们的地方(here https://stackoverflow.com/questions/4214731/coffeescript-global-variables对此进行了彻底的讨论)。
Edit: here's http://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-11关于这个主题的另一个较长的、理论性的但很好的文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)