gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:11:34 25 4
gpt4 key购买 nike

我有一个新手问题:-)

我正在“创建”一个应用程序,我使用 M. Hartl 的教程来做这件事。但是自从我决定更改routes.rb 以来,我遇到了一些问题。
我知道问题已经发布了,但答案对我不起作用,所以我想我应该问一个新的...

以下是代码:

配置/路由.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 prerun 块内的那个)

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 WARNING: The :version option is deprecated. Only RSpec 2 is now supported.

10:07:46 - INFO - Guard uses Libnotify to send notifications.

10:07:46 - INFO - Guard uses TerminalTitle to send notifications.

10:07:46 - INFO - Starting Spork for RSpec

Using RSpec

Preloading Rails environment

Loading Spork.prefork block...

Rack::File headers parameter replaces cache_control after Rack 1.5.

Spork is ready and listening on 8989!

10:07:53 - INFO - Spork server for RSpec successfully started

10:07:53 - INFO - Guard::RSpec is running

10:07:53 - INFO - Running all specs

Running tests with args ["--drb", "-f", "progress", "-r", "/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/guard-rspec-2.4.0/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec"]...

Exception encountered: #>

backtrace:

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:8:in `block (2 levels) in '

/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'

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

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

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:7:in `block in '

/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'

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

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

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

/home/flokate/Rubyrails/vidons/spec/requests/static_pages_spec.rb:3:in `'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `block in load'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'

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

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

/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'

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

/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 `block in run'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/forker.rb:21:in `block in initialize'

/home/flokate/.rvm/gems/ruby-1.9.3-p286/gems/spork-0.9.2/lib/spork/forker.rb:18:in `fork'

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

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

/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 `perform_without_block'

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

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1586:in `block (2 levels) in main_loop'

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

/home/flokate/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/drb/drb.rb:1582:in `block in main_loop'

Done.



由于弃用警告,我查看了我的 Gemfile,并删除了版本号,以便使用我感兴趣的最后一个 gem:

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.

而且它没有改变任何东西......
目前我不太明白,但我希望你们中的一个能给我带来光明;-)

最佳答案

你只需要visit root_path在 before 块内:before { visit root_path }

关于rspec - 未定义的局部变量或方法 `root_path'(Rspec Spork Guard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com