0

スペック ファイルとアセットをコーヒー スクリプトとして実行するために、jasmine-headless-webkit を使用することにしました。すべてが正しくインストールされていると思いますが、おそらく jasmine.yml ファイルに何か問題があります。

src_files:
  - spec/support/javascripts/jquery-1.7.2.js
  - app/assets/javascripts/application.js
helpers:
  - helpers/**/*
spec_files:
  - "**/*_spec.*"
src_dir: 
  - vendor/assets/javascripts
spec_dir: spec/javascripts

コマンドを実行すると、同じ行に沿って 3 つのエラーが発生します。

Editor should have an array named tables. (/Users/aaronmcleod/Documents/awesome_model/spec/javascripts/editor_spec.js.coffee:20)
ReferenceError: Can't find variable: AwesomeModel

AwesomeModel 変数は、window オブジェクトにエクスポートする、私が使用しているハッシュです。次に、Editor クラスなどをそれにアタッチします。なぜこれが定義されていないのかについてのアイデアはありますか? 役立つ場合は、これが私の仕様ファイルです。

fixture_text = ->
  "Company has_many:Employee\n" +
  "  id : int\n" +
  "  name : varchar\n" +
  "Employee belongs_to:Company\n" +
  "  id : int\n" +
  "  name : varchar\n" +
  "  phone : varchar\n" +
  "ComplicatedTable-Name\n" +
  "  id : int"

class DummyPane
  constructor: ->
    @viewport = {}

  clean_up: ->

describe "Editor", ->

  it "should have an array named tables", ->
    editor = new AwesomeModel.Editor(fixture_text())
    expect(editor.tables).toBeDefined()

  describe "#parse_table_names", ->
    text = fixture_text()
    editor = new AwesomeModel.Editor(text)

    it "tables should be of three length", ->
      editor.parse_table_names()
      expect(editor.tables.length).toEqual(3)

    it "the first table name should be 'Company'", ->
      editor.parse_table_names()
      expect(editor.tables[0].name).toEqual("Company")

    it "the third table name should be 'ComplicatedTable-Name'", ->
      editor.parse_table_names()
      expect(editor.tables[2].name).toEqual("ComplicatedTable-Name")

  describe "#add_columns", ->
    text = fixture_text()
    editor = new AwesomeModel.Editor(text)
    editor.parse_table_names()

    describe "first table", ->
      it "the first table should have two columns", ->
        editor.add_columns()
        table = editor.tables[0]

        expect(table.columns.length).toEqual(2)

      it "the first column of first table should be named 'id : int'", ->
        editor.add_columns
        table = editor.tables[0]
        expect(table.columns[0].name).toEqual('id : int')
4

1 に答える 1

0

ガードを活用して答えを見つけました。spec ファイルへの変更はありません。jasmine.yml ファイルへのマイナーな変更がいくつかあります。ここに私の宝石ファイルがあります:

source 'https://rubygems.org'

gem 'rails', '3.2.0'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer'

  gem 'uglifier', '>= 1.0.3'
end

gem 'haml-rails'

gem 'jquery-rails'

platforms :ruby do
  gem 'pg'
end

platforms :jruby do
  gem 'jruby-openssl'
  gem 'activerecord-jdbcpostgresql-adapter'
end

group :test, :development do
  gem 'rspec-rails'
  gem 'capybara'
  gem 'jasmine'
  gem 'guard'
  gem 'guard-coffeescript'
end

私のガードファイル:

# A sample Guardfile
# More info at https://github.com/guard/guard#readme

guard 'coffeescript', input: 'spec/javascripts', output: 'spec/javascripts'

Jasmine.yml

src_dir: 
  - assets/javascripts
src_files:
  - assets/application.js
helpers:
  - helpers/**/*
spec_files:
  - "**/*_spec.js"

spec_dir: spec/javascripts

ローカル フォルダー構造を使用しないようにアセット パスを変更しましたが、アセット パスを適切に使用しました。

これを実行するguardには、1 つのタブで実行しrake jasmine、別のタブで実行します。spec ファイルを保存すると、.js バージョンがガードによってコンパイルされます。

于 2012-06-19T22:48:54.710 に答える