Вопрос: Классы, определенные в CoffeeScript, не найденные спецификациями Jasmine


Я создаю приложение backbone.js для back-end Rails 3.1. Я использую CoffeeScript для написания базовых классов и 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

я считать  Мне нужно сказать Жасмину, чтобы загрузить содержимое avia_view.js.coffee но я не совсем уверен, как это сделать. Добавление явной ссылки в src_files в разделе jasmine.yml похоже, не имеет значения ...

Может кто-нибудь, пожалуйста, скажите мне, что я здесь делаю неправильно? Я подозреваю, что это что-то простое ...


3


источник


Ответы:


Не увидев большую часть вашего кода, я бы заподозрил, что это может быть связано с переносом функций CoffeeScript ( документы ). Вы должны убедиться, что все символы, которые вы хотите использовать, экспортируются туда, где вы можете получить их ( Вот  это обстоятельное обсуждение этого вопроса).

Редактировать:   вот  еще одна длинная и теоретическая, но хорошая документация по этой теме.


5



Попробуйте добавить это к своему avia_view.js.coffee

(exports ? this).Avia = Avia 

Увидеть этот  для подробного объяснения.

Попробуйте этот ;

window.Avia = Avia

Мы столкнулись с той же проблемой; я очень рекомендую Жасминовый рис


3