Coffeescript にクラスがあるとします。
class MyGame
constructor: () ->
@me = new Player
@opponents = [new Player, new Player]
ジャスミンでテストしたい:
describe "MyGame", ->
beforeEach ->
window.game = new MyGame
it "should have two players", ->
expect(window.game.opponents.length).toEqual 2
しかし、エラーが発生しますTypeError: Result of expression 'window.game.opponents' [undefined] is not an object.か?
window.gameアプローチも私には厄介に思えます。@game = new MyGameエラーが発生したときにそれを定義しようとするとReferenceError: Can't find variable: MyGame、Coffeescriptが物事をまとめる方法と関係があると思いますか?
更新:上記の問題は、参照の問題に似ているようです。私はguard-jasmine次のように実行しています
guard 'jasmine', :all_on_start => false, :all_after_pass => false do
watch(%r{app/assets/javascripts/(.+)\.(js\.coffee|js)}) { |m| "spec/javascripts/#{m[1]}_spec.#{m[2]}" }
watch(%r{spec/javascripts/(.+)_spec\.(js\.coffee|js)}) { |m| "spec/javascripts/#{m[1]}_spec.#{m[2]}" }
watch(%r{spec/javascripts/spec\.(js\.coffee|js)}) { "spec/javascripts" }
end
私のjasmine.ymlファイルには次のものがあります:
src_files:
- "app/assets/**/*.js"
- "app/assets/**/*.coffee"
spec_files:
- '**/*[sS]pec.js.coffee'
asset_pipeline_paths:
- app/assets
- spec/javascripts
私はそれを取得したReferenceError: Can't find variable: MyGameので、Rails 3.1 アセット パイプラインに関連するものか、Coffeescript がオブジェクトをラップする方法のいずれかであると考えています。