1

ガードのセットアップまたは独立した Guard-jasmine コマンドで Guard-jasmine を実行しようとすると、このエラーが発生ます

Guard::Jasmine starts thin test server on port 8888 in test environment.
Waiting for Jasmine test runner at http://example.com:8888/
Run Jasmine suite spec/javascripts/credit_card_spec.js
Run Jasmine suite at http://example.com:8888/?spec=CreditCard
Can't open '/home/yuvilio/.rvm/gems/ruby-1.9.3-p194@agilerails/bundler/gems/guard-jasmine-0fd614d12263/lib/guard/jasmine/phantomjs/guard-jasmine.coffee'
ERROR: No response from the Jasmine runner!

不思議なことに、「guard-jasmine.coffee」ファイルは確かにそこにあり、問題ないようです。

私の Gemfile には以下が含まれます。

group :test, :development do
  #...
  gem 'guard-jasmine', :git => "https://github.com/netzpirat/guard-jasmine.git", :branch => 'master'
  gem 'jasminerice', :git => "https://github.com/bradphelan/jasminerice.git", :branch => 'master'
  gem 'jasmine'
end

私の Guardfile には以下が含まれます。

guard 'jasmine', :all_on_start => false, :server => :thin, :port => 8888,  :jasmine_url => 'http://localhost:8888/', :server_env => :test do
  watch(%r{spec/javascripts/spec\.(js\.coffee|js|coffee)$})         { "spec/javascripts" }
  watch(%r{spec/javascripts/.+_spec\.(js\.coffee|js|coffee)$})
  watch(%r{app/assets/javascripts/(.+?)\.(js\.coffee|js|coffee)$})  { |m| "spec/javascripts/#{m[1]}_spec.#{m[2]}" }
end

そのhttp://example.com:8888/?spec=CreditCardテストを実行rake jasmineして参照すると、正常に表示されます (現在、テストは期待どおりに失敗しています)。何がガードを引き起こしているのか

追記:

これは、phantomjs の問題であることが判明しました。@netzpirat は、以下の回答のコメントで正しく診断しました。最新のphantomjsがバージョン1.4のUbuntuを使用していました。「開けません」というエラーがそこで発生していました (おそらくこのバグに関連していますか?)。解決するために、 1.5 の PPAを見つけてそこからインストールしました (ここでは、より多くのアーキテクチャで直接利用することもできます)。それはそれを修正しました。

4

1 に答える 1

2

アセット パイプラインを介して Jasminerice を使用して Jasmine 仕様を提供する場合、URL はhttp://localhost:8888/jasmineデフォルトです。これは Guard-jasmine のデフォルトでもあるため、単純にオプションをスキップできます (ポート 8888 もデフォルトです)。

guard 'jasmine', :all_on_start => false, :server => :thin, :server_env => :test do
  watch(%r{spec/javascripts/spec\.(js\.coffee|js|coffee)$})         { "spec/javascripts" }
  watch(%r{spec/javascripts/.+_spec\.(js\.coffee|js|coffee)$})
  watch(%r{app/assets/javascripts/(.+?)\.(js\.coffee|js|coffee)$})  { |m| "spec/javascripts/#{m[1]}_spec.#{m[2]}" }
end

developmentのデフォルトとして選択した理由:server_envは、エラーが発生した実際のファイル名が表示されるためです。developmentローカル開発とtestCI サーバーでは に設定することをお勧めします。

于 2012-06-18T17:36:42.317 に答える