Тестирование Coffeescript с помощью Jasmine и Rails 3.1

Скажем, у меня есть класс в Coffeescript:

class MyGame
   constructor: () ->
      @me = new Player
      @opponents = [new Player, new Player]

, который хотел бы протестировать в Jasmine:

describe "MyGame", ->
   beforeEach ->
     window.game = new MyGame

   it "should have two players", ->
      expect(window.game.opponents.length).toEqual 2

Но я получаю error TypeError: Результат выражения 'window.game.opponents' [undefined] не является объектом. ?

Подход window.game мне тоже кажется неудобным. Если я попытаюсь определить его как @game = new MyGame , я получу ошибку ReferenceError: не могу найти переменную: 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: не могу найти variable: MyGame , поэтому я полагаю, что это либо что-то из конвейера ресурсов Rails 3.1, либо способ обертывания объектов в Coffeescript.

5
задан Morten 3 November 2011 в 08:13
поделиться