未定义的局部变量或方法`root_path'(Rspec Spork Guard)

时间:2013-02-14 09:47:48

标签: rspec ruby-on-rails-3.2 guard spork

我有一个新手问题: - )

我" m"创造"一个应用程序,我使用M. Hartl的教程来做到这一点。但是自从我决定改变我的路线后,我遇到了一些问题。 我知道问题已经发布了,但答案对我不起作用,所以我想我应该问一个新问题......

以下是代码:

配置/ routes.rb中

  root to: 'static_pages#home'
  match '/help', to: 'static_pages#help'
  match '/contact', to: 'static_pages#contact'
  match '/about', to: 'static_pages#about'

规格/请求/ static_pages.rb

require 'spec_helper'

describe "Static pages" do

  let(:base_title) { "Vidons" }

  describe "Home page" do
    visit root_path
    it "should have the h1 'Vidons'" do
      page.should have_selector('h1', :text => 'Vidons')
    end
    it "should have the base title" do
      page.should have_selector('title', :text => "#{base_title}")
    end
  end

  describe "Help page" do
    visit help_path
    it "should have the h1 'Aide'" do
      page.should have_selector('h1', :text => 'Aide')
    end
    it "should have the title 'Aide'" do
      page.should have_selector('title', :text => "#{base_title} | Aide")
    end
  end

  describe "About page" do
    visit about_path
    it "should have the h1 'A propos'" do
      page.should have_selector('h1', :text => 'A propos')
    end
    it "should have the title 'A propos'" do
      page.should have_selector('title', :text => "#{base_title} | A propos")
    end
  end

  describe "Contact page" do
    visit contact_path
    it "should have the h1 'Contact'" do
      page.should have_selector('h1', :text => 'Contact')
    end
    it "should have the title 'Contact'" do
      page.should have_selector('title', :text => "#{base_title} | Contact")
    end
  end
end

规格/ spec_helper.rb

(我删除了一个Rspec.configure块,并保留了spork预运行块内的那个)

require 'rubygems'
require 'spork'
#uncomment the following line to use spork with the debugger
#require 'spork/ext/ruby-debug'

Spork.prefork do
  # Loading more in this block will cause your tests to run faster. However,
  # if you change any configuration or code from libraries loaded here, you'll
  # need to restart spork for it take effect.
  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'rspec/autorun'

  # Requires supporting ruby files with custom matchers and macros, etc,
  # in spec/support/ and its subdirectories.
  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|
    # == Mock Framework
    #
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
    #
    # config.mock_with :mocha
    # config.mock_with :flexmock
    # config.mock_with :rr
    config.mock_with :rspec

    # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
    config.fixture_path = "#{::Rails.root}/spec/fixtures"

    # If you're not using ActiveRecord, or you'd prefer not to run each of your
    # examples within a transaction, remove the following line or assign false
    # instead of true.
    config.use_transactional_fixtures = true

    # If true, the base class of anonymous controllers will be inferred
    # automatically. This will be the default behavior in future versions of
    # rspec-rails.
    config.infer_base_class_for_anonymous_controllers = false
  end
end

Spork.each_run do
  # This code will be run each time you run your specs.

end

这是rspec-guard的回应:

  

10:07:46 - INFO - DEPRECATION警告:不推荐使用:version选项。现在只支持RSpec 2.

     

10:07:46 - INFO - Guard使用Libnotify发送通知。

     

10:07:46 - INFO - Guard使用TerminalTitle发送通知。

     

10:07:46 - INFO - 为RSpec启动Spork

     

使用RSpec

     

预加载Rails环境

     

加载Spork.prefork块...

     

Rack :: File headers参数在Rack 1.5之后替换cache_control。

     

Spork已经准备就绪,正在听8989!

     

10:07:53 - INFO - RSpec的Spork服务器已成功启动

     

10:07:53 - INFO - Guard :: RSpec正在运行

     

10:07:53 - INFO - 运行所有规格

     

使用args运行测试[" - drb"," -f","进度"," -r",&# 34; /home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/guard-rspec-2.4.0/lib/guard/rspec/formatter.rb" ;," -f&# 34;," Guard :: RSpec :: Formatter"," - failure-exit-code"," 2"," spec" ] ...

     

遇到异常:#>

     

回溯:

     

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:8:在'

中的块(2级)      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:244:in`module_eval' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:244:in` subclass' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:230:in`medes' < / p>      

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:7:在`块中&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:244:in`module_eval' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:244:in` subclass' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/example_group.rb:230:in`medes' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/dsl.rb:18:in`medes' < / p>      

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:3:in`&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in"load&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in"clock in load&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in,load_dependency&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in"load&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in在load_spec_files&#39中的块;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in`每个&#39; < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in`load_spec_files' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:22:in'run' < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/test_framework/rspec.rb:11:in`run_tests'

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:13:in在运行中阻止&#39; < / p>      

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/forker.rb:21:in,clock in initialize&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/forker.rb:18:in“fork&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/forker.rb:18:in`initialize&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:9:in"new&#39;

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:9:in'run'

     

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/server.rb:48:in'run'

     

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1548:in`performance_without_block&#39;

     

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1508:in`exese'

     

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1586:in在main_loop中的块(2级)&#39; < / p>      

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1582:in循环&#39;

     

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1582:in在main_loop中的块&#39;

     

完成。

由于DEPRECATION WARNING,我查看了我的Gemfile,并删除了版本号,以便使用我感兴趣的最新宝石:

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'spork'
end

给我的是:

Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3) 
Using i18n (0.6.1) 
Using multi_json (1.6.0) 
Using activesupport (3.2.12) 
Using builder (3.0.4) 
Using activemodel (3.2.12) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.5) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.2.2) 
Using actionpack (3.2.12) 
Using mime-types (1.21) 
Using polyglot (0.3.3) 
Using treetop (1.4.12) 
Using mail (2.4.4) 
Using actionmailer (3.2.12) 
Using arel (3.0.2) 
Using tzinfo (0.3.35) 
Using activerecord (3.2.12) 
Using activeresource (3.2.12) 
Using annotate (2.5.0) 
Using bcrypt-ruby (3.0.1) 
Using bootstrap-sass (2.1.0.0) 
Using bundler (1.2.3) 
Using nokogiri (1.5.6) 
Using ffi (1.3.1) 
Using childprocess (0.3.8) 
Using rubyzip (0.9.9) 
Using websocket (1.0.7) 
Using selenium-webdriver (2.29.0) 
Using xpath (0.1.4) 
Using capybara (1.1.2) 
Using coderay (1.0.8) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.3) 
Using json (1.7.7) 
Using rdoc (3.12.1) 
Using thor (0.17.0) 
Using railties (3.2.12) 
Using coffee-rails (3.2.2) 
Using diff-lcs (1.1.3) 
Using factory_girl (4.1.0) 
Using factory_girl_rails (4.1.0) 
Using listen (0.7.2) 
Using lumberjack (1.0.2) 
Using method_source (0.8.1) 
Using slop (3.4.3) 
Using pry (0.9.12) 
Using terminal-table (1.4.5) 
Using guard (1.6.2) 
Using rspec-core (2.12.2) 
Using rspec-expectations (2.12.1) 
Using rspec-mocks (2.12.2) 
Using rspec (2.12.0) 
Using guard-rspec (2.4.0) 
Using spork (0.9.2) 
Using guard-spork (1.4.2) 
Using jquery-rails (2.0.2) 
Using libnotify (0.5.9) 
Using rails (3.2.12) 
Using rb-inotify (0.8.8) 
Using rspec-rails (2.12.2) 
Using sass (3.2.5) 
Using sass-rails (3.2.5) 
Using sqlite3 (1.3.5) 
Using uglifier (1.2.3) 
Your bundle is updated! Use `bundle show [gemname]` to see where a bundled gem is installed.

它并没有改变任何事情...... 我现在不太了解,但我希望你们中的一个能给我带来光明; - )

1 个答案:

答案 0 :(得分:3)

您必须在前一个区块中visit root_pathbefore { visit root_path }