Jasmine规范找不到CoffeeScript中定义的类

Dun*_*yne 3 coffeescript jasmine ruby-on-rails-3.1

我正在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
Run Code Online (Sandbox Code Playgroud)

......我希望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)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我需要告诉Jasmine加载内容,avia_view.js.coffee但我不完全确定如何.在该src_files部分中添加显式引用jasmine.yml似乎没有什么区别......

有人可以告诉我这里我做错了什么吗?我怀疑这很简单......

Jac*_*son 5

在没有看到你的大部分代码的情况下,我怀疑它是因为CoffeeScript的函数包装(docs).您需要确保将要使用的所有符号导出到可以获取它们的位置(是对此的详尽讨论).

编辑: 这是关于这个主题另一个冗长且理论但很好的文档.