试图在合并Rails两个项目时调试一些我无法工作的规范.
我已经删除了我的Gemfile.lock并从头开始重新安装,我已经对特定的宝石进行了捆绑更新,而且整个很多但是当我尝试在我的请求规范中使用时出现错误
save_and_open_page
- railsdev$bin/rspec spec/requests/authentication_pages_spec.rb
- No DRb server is running. Running in local process instead ...
- /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:33:in `block (3 levels) in <top (required)>': undefined local variable or method `save_and_open_page' for #<Class:0x007f981d139608> (NameError)
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
- from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:27:in `block (2 levels) in <top (required)>'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
- from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:24:in `block in <top (required)>'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/dsl.rb:18:in `describe'
- from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:13:in `<top (required)>'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in `load'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in `block in load_spec_files'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in `map'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in `load_spec_files'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/command_line.rb:22:in `run'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:66:in `rescue in run'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:62:in `run'
- from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:10:in `block in autorun'
任何人都可以建议为什么失败以及我需要做些什么来纠正这个问题?
我让它在一个测试项目中运行,但在核心项目的主副本中,我不想将其搞砸.
编辑#1
所要求的代码:
- require 'spec_helper'
- # describe "AuthenticationPages" do
- # describe "GET /authentication_pages" do
- # it "works! (now write some real specs)" do
- # # Run the generator again with the --webrat flag if you want to use webrat methods/matchers
- # get authentication_pages_index_path
- # response.status.should be(200)
- # end
- # end
- # end
- describe "Authentication" do
- subject { page }
- describe "login page" do
- before { visit login_path }
- it { should have_selector('h1',text: 'Login') }
- it { should have_selector('title',text: 'Login') }
- end
- describe "login" do
- before { visit login_path }
- describe "with invalid information" do
- before { click_button "Login" }
- it { should have_selector('title',text: 'Login') }
- it { should have_error_message('Invalid') }
- save_and_open_page
- describe "after visiting another page" do
- before { click_link "Home" }
- it { should_not have_selector('div.alert.alert-error') }
- end
- end
- describe "with valid information" do
- let(:user) { FactoryGirl.create(:user) }
- before { valid_login(user) }
- it { should have_selector('title',text: user.name) }
- #it { should have_link('Profile',href: user_path(user)) }
- it { should have_link('logout',href: logout_path) }
- it { should_not have_link('Login',href: login_path) }
- describe "followed by logout" do
- before { click_link "logout" }
- it { should have_link('Login') }
- end
- end
- end
- describe "authorization" do
- describe "for non-logged-in users" do
- let(:user) { FactoryGirl.create(:user) }
- describe "when attempting to visit a protected page" do
- before do
- visit edit_user_path(user)
- fill_in "Name",with: user.name
- fill_in "Password",with: user.password
- click_button "Login"
- end
- describe "after logging in" do
- it "should render the desired protected page" do
- page.should have_selector('title',text: 'Edit user')
- end
- end
- end
- describe "in the Users controller" do
- describe "visting the user index" do
- before { visit users_path }
- it { should have_selector('title',text: 'Login') }
- end
- describe "visiting the edit page" do
- before { visit edit_user_path(user) }
- it { should have_selector('title',text: 'Login') }
- end
- describe "submitting to the update action" do
- before { put user_path(user) }
- specify { response.should redirect_to(login_path) }
- end
- end
- end
- describe "as wrong user" do
- let(:user) { FactoryGirl.create(:user) }
- let(:wrong_user) { FactoryGirl.create(:user,name: "WrongName") }
- before { login user }
- describe "visiting Users#edit page" do
- before { visit edit_user_path(wrong_user) }
- it { should_not have_selector('title',text: full_title('Edit user')) }
- end
- describe "submitting a PUT request to the Users#update action" do
- before { put user_path(wrong_user) }
- specify { response.should redirect_to(root_path) }
- end
- end
- end
- end
的Gemfile:
- source 'https://rubygems.org'
- gem 'rails','3.2.5'
- # Bundle edge Rails instead:
- # gem 'rails',:git => 'git://github.com/rails/rails.git'
- group :development,:test do
- gem 'sqlite3','1.3.5'
- gem "rspec-rails","~> 2.10.1"
- gem 'guard-rspec','0.5.5'
- gem 'annotate','~> 2.4.1.beta'
- gem 'pickle'
- gem 'simplecov'
- gem 'pg','0.12.2'
- gem 'capybara','1.1.2'
- gem 'launchy'
- end
- # Gems used only for assets and not required
- # in production environments by default.
- group :assets do
- gem 'sass-rails','~> 3.2.4'
- gem 'coffee-rails','~> 3.2.2'
- gem 'uglifier','>= 1.2.3'
- gem 'bootstrap-sass','~> 2.0.3.1'
- # See https://github.com/sstephenson/execjs#readme for more supported runtimes
- # gem 'therubyracer',:platform => :ruby
- end
- gem 'jquery-rails','2.0.2'
- gem 'bootstrap-will_paginate','0.0.5'
- gem 'bootstrap-datepicker-rails'
- gem 'will_paginate','3.0.3'
- gem 'faker','1.0.1'
- gem 'wicked_pdf'
- # To use ActiveModel has_secure_password
- gem 'bcrypt-ruby','3.0.1'
- #gem 'ransack'
- gem 'cancan'
- # Test gems on Macintosh OS X
- group :test do
- gem 'rb-fsevent',:git => 'git://github.com/ttilley/rb-fsevent.git',:branch => 'pre-compiled-gem-one-off'
- gem 'growl','1.0.3'
- gem 'guard-spork','0.3.2'
- gem 'spork','0.9.0'
- gem 'factory_girl_rails','4.1.0'
- gem 'cucumber-rails','1.2.1',:require => false
- gem 'database_cleaner','0.7.0'
- end
- group :production do
- gem 'pg','0.12.2'
- end
解决方法
尝试从it块中调用save_and_open_page:
所以代替:
- it { should have_error_message('Invalid') }
- save_and_open_page
尝试这个:
- it { should have_error_message('Invalid'); save_and_open_page }
今晚为我修好了