无法打开guard-jasmine.coffee,Jasmine选手没有回复

时间:2012-06-18 15:32:07

标签: ruby-on-rails jasmine guard phantomjs

当我尝试在我的后卫设置或独立的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

当我运行rake jasmine并浏览到http://example.com:8888/?spec=CreditCard测试时,它显示正常(测试当前按预期失败)。不知道是什么导致了后卫

后记:

这结果是一个幻影问题。 @netzpirat在a comment in his answer below中正确诊断出来了。我使用的是Ubuntu,其最新的phantomjs是版本1.4。那里发生了“无法打开”错误(或许与this bug相关?)。为了解决这个问题,我找到了PPA that had 1.5并从那里安装了它(它也可以直接用于更多架构here)。修好了。

1 个答案:

答案 0 :(得分: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以进行本地开发,并将test设置为CI服务器。