Классы, определенные в кофериппид.
-
25-10-2019 - |
Вопрос
Я строю приложение Backbone.js на рельсах 3.1. Я использую CoffeeScript, чтобы написать классы магистралей, а жасмин (через жасмин-безголовный 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
Кажется, не имеет значения ...
Может ли кто -нибудь сказать мне, что я здесь делаю не так? Я подозреваю, что это что -то простое ...
Решение
Не увидев большую часть вашего кода, я подозреваю, что это обертывает функцию CoffeeScript (док) Вы должны убедиться, что все символы, которые вы хотите использовать, экспортируются туда, где вы можете получить их (здесь это тщательная дискуссия об этом).
Редактировать: вот Еще одна длинная и теоретическая, но хорошая документация по этой теме.
Другие советы
Попробуйте добавить это в свой avia_view.js.coffee
(exports ? this).Avia = Avia
Видеть это Для подробного объяснения.
В качестве альтернативы попробуйте это;
window.Avia = Avia
Мы столкнулись с той же проблемой; я очень рекомендую Рис Жасмин