Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 获取Rspec+;在windows上工作的自动测试_Windows 7_Ruby On Rails 3_Rspec - Fatal编程技术网

Windows 7 获取Rspec+;在windows上工作的自动测试

Windows 7 获取Rspec+;在windows上工作的自动测试,windows-7,ruby-on-rails-3,rspec,Windows 7,Ruby On Rails 3,Rspec,我已经在我的Windows7机器上安装了growl+rspec+autotest。在命令提示下,当我键入“rspec spec/”时,它不起作用。仅当我使用“rake spec/”+“autotest”时,测试才会运行 此外,我正在运行这些测试:(即非常非常琐碎),它们需要8.11秒 当我运行它们时,它们也会失败——即使示例中没有。我已经完成了教程告诉我的一切,问题是教程没有深入到在Windows机器上安装rspec。它提供了一个链接,但即使这样,你也必须把指令拼凑在一起 我得到的错误是'Fai

我已经在我的Windows7机器上安装了growl+rspec+autotest。在命令提示下,当我键入“rspec spec/”时,它不起作用。仅当我使用“rake spec/”+“autotest”时,测试才会运行

此外,我正在运行这些测试:(即非常非常琐碎),它们需要8.11秒

当我运行它们时,它们也会失败——即使示例中没有。我已经完成了教程告诉我的一切,问题是教程没有深入到在Windows机器上安装rspec。它提供了一个链接,但即使这样,你也必须把指令拼凑在一起

我得到的错误是
'Failure/Error:找不到C来读取失败的行[31mundefined Method get'for#'

第二个错误与此非常相似

我还正确安装了Growl,因为我收到了两个失败的通知


有人能帮我吗?

我还没有找到一个有效的永久性修复程序,但很明显,它归结为一个路径问题-有什么东西正在吞噬windows路径并使其中断。但是,有一个解决方法:

在您的描述中,在“获取”呼叫之前,请填写以下内容:

包括RSpec::Rails::ControllerExampleGroup

下面是使用控制器生成的Rails规范的示例代码。请注意,它位于作用域的开头:

require 'spec_helper'

describe PagesController do
  include RSpec::Rails::ControllerExampleGroup

  describe "GET 'home'" do
    it "should be successful" do
      get 'home'
      response.should be_success
    end
  end

  describe "GET 'contact'" do
    it "should be successful" do
      get 'contact'
      response.should be_success
    end
  end

end
我看到一个修复建议对spec_helper(在Rails中)进行更改,但我无法让它工作


编辑:更多的研究表明,这是autospec的一个问题-如果您只使用rspec,这种解决方法将起作用,但不能用于autotest。然而,我还没有找到解决方案。

我用谷歌搜索了一下,根据和,这是rspec rails的一个问题,已经修复

我使用rails 3.0.3在Windows7上运行Ruby 1.9.2p136

这就是我的Gemfile的样子,它显示了我使用的rspec和rspec rails的版本:

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'

group :development do
  gem 'rspec-rails', '2.4.1'
end

group :test do
  gem 'rspec', '2.4.0'
  gem 'webrat', '0.7.1'
end
我之所以说“看起来像”,是因为当我试图运行rspec rails生成器时,我得到了以下结果:

C:\Ruby\sample_app>rails generate rspec:install
  create  .rspec
  create  spec
  create  spec/spec_helper.rb
Could not find "autotest" in any of your source paths. Your current source paths
 are:
C:/Ruby/sample_app/lib/templates/rspec/install
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-rails-2.3.0/lib/generators/rspec/install/templates
于是,我将自动测试添加到我的Gemfile中(并再次安装了bundle),然后再次尝试rails generate rspec:install,结果没有出现任何错误

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'

group :development do
  gem 'autotest'
  gem 'rspec-rails', '2.4.1'
end

group :test do
  gem 'rspec', '2.4.0'
  gem 'webrat', '0.7.1'
end
此安装的自动测试版本为4.4.6:

C:\Ruby\sample_app>bundle show autotest
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/autotest-4.4.6
然后,我按照教程中的说明创建了控制器:

$ rails generate controller Pages home contact
我能够运行“bundle exec autotest”和“rspec spec/”而不会出现您看到的错误:

C:\Ruby\sample_app>bundle exec autotest
loading autotest/rspec2
bundle exec C:\Ruby\192-stackoverflow\bin\ruby -S C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-core-2.4.0/bin/rspec --tty 'C:/Ruby/sample_app/spec/controllers/pages_controller_spec.rb'
..

Finished in 23.04 seconds
2 examples, 0 failures
# I killed autotest with CTRL-c at this point
Interrupt a second time to quit
Terminate batch job (Y/N)? y
Terminate batch job (Y/N)? y


C:\Ruby\sample_app>rspec spec/
..

Finished in 23.11 seconds
2 examples, 0 failures
我还继续学习教程,为About页面编写规范,而autotest正在运行,它在我的更改上运行,没有任何问题

因此,请尝试:

  • 更新您的Gemspec,使其看起来与我在这里发布的第二个类似
  • 正在运行“bundle安装”
  • 正在运行“bundle exec autotest”

  • 让我知道这是否有效。我会回来查看的!

    我认为这可能会帮助那些可能有问题的人,因为所有的gem都已经更新了很多(特别是那些使用Ruby on Rails 3教程的人):

    我能够使用最新版本的所有gems实现这一点:

    我的档案:

    source 'https://rubygems.org'
    
    gem 'rails', '3.2.6'
    gem 'jquery-rails'
    
    gem 'sqlite3', :group => [:development, :test]
    gem 'pg', :group => :production #This is so Heroku will work
    
    group :development do
      gem 'rspec-rails'
    end
    
    group :test do
      gem 'rspec'
      gem 'webrat'
      gem 'spork-rails'  #Use this is only if you want to use spork
    end
    
    如果您已经有了旧版本,请确保清理rspec(例如,通过使用RubyonRails3教程):

    要使用自动测试,请按照以下说明操作:

    请注意,安装growl for windows是该交易的一部分,而snarl不需要:

    .autotest文件可以位于以下两个位置之一

    1) 您的主目录,即(示例):

    2) rails应用程序根目录(这将仅对该应用程序运行)

    我的.autotest文件如下所示:

    require 'autotest/growl'
    require 'autotest/restart'
    require 'autotest/timestamp'
    
    Autotest.add_hook :initialize do |autotest|
      autotest.add_mapping(%r%^spec/(requrests)/.*rb$%) do
    |filename, _|
    filename
    end
    end
    
    Autotest::Growl::clear_terminal = false
    
    确保您已完成“捆绑安装”

    然后运行windows咆哮(开始菜单或windows启动时启动)

    在命令行中运行自动测试,您应该可以开始了

    c:\users\joeblow\workspace\Rails\MyRailsProject> autotest
    

    marcamillion,当你有机会的时候,你能评论一下ruby、rails、rspec和autotest的确切版本吗?我将尝试用这些版本中的最新版本复制它,但以防万一我想知道你的版本。
    c:\users\joeblow\workspace\Rails\MyRailsProject> autotest