質問

Rails 3.1バックエンドでBackbone.jsアプリを構築しています。 Coffeescriptを使用してバックボーンクラスを作成し、ジャスミン(ジャスミンヘッドレスウェブキット経由)をテストするために使用しています。

次の(部分的な)ツリーが与えられます:

.
├── 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の関数ラッピングのビーケスを疑うと疑っています(ドキュメント)。使用したいすべてのシンボルが、それらに得られる場所にエクスポートされるようにする必要があります(ここ それについての徹底的な議論です)。

編集: これがそうです このトピックに関するもう1つの長年の理論的であるが良いドキュメント。

他のヒント

これをあなたに追加してみてください avia_view.js.coffee

(exports ? this).Avia = Avia 

見る これ 詳細な説明。

または、試してみてください これ;

window.Avia = Avia

同じ問題に遭遇しました。強くお勧めします ジャスミン米

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top