3

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.AviaViewavia_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)

Myjasmine.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

Jasmine にコンテンツをロードするように指示する必要があると思いますavia_view.js.coffeeが、その方法が完全にはわかりません。src_filesのセクションに明示的な参照を追加しjasmine.ymlても、違いはないようです...

誰かが私がここで間違っていることを教えてもらえますか? 私はそれが単純なものだと思う...

4

2 に答える 2

5

コードの多くを見ていないので、CoffeeScript の関数ラッピング ( docs ) が原因ではないかと思います。使用したいすべてのシンボルが、それらを取得できる場所にエクスポートされていることを確認する必要があります (これについての詳細な説明はここにあります)。

編集: これは、このトピックに関する別の長くて理論的ですが、優れたドキュメントです。

于 2011-11-29T14:52:02.360 に答える
3

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

(exports ? this).Avia = Avia 

詳細な説明については、これを参照してください。

または、これを試してください。

window.Avia = Avia

同じ問題が発生しました。ジャスミンライスを強くお勧めします

于 2012-03-16T11:11:16.913 に答える