2012-01-24 13 views
5

मुझे यकीन नहीं है कि क्या हो रहा है, लेकिन मुझे काम करने के लिए सरल परीक्षण नहीं मिल रहे हैं क्योंकि कैपिबरा की यात्रा विधि मेरे लिए काम नहीं कर रही है। मैं this railscast on testing को खत्म करने की कोशिश कर रहा हूं।कैपिबरा विज़िट विधि काम नहीं कर रही है

एक बार जब मैं उस बिंदु पर पहुंच जाता हूं जहां कैपिबरा को लॉगिन पृष्ठ पर जाना पड़ता है तो परीक्षण विफल रहता है क्योंकि यह केवल मेरी root_url पर जा सकता है। यहां विफलता कैसी दिखती है। ध्यान दें कि यह असफल रहा है क्योंकि यह लॉगिन पेज पर भी नहीं जा सकता है। यह होमपेज पर फंस रहा है:

Running: spec/requests/password_resets_spec.rb 
Running tests with args ["--color", "--failure-exit-code", "2", "--format", "progress", "--format", "Guard::RSpec::Formatter::NotificationRSpec", "--out", "/dev/null", "--require", "/Users/lee/.rvm/gems/[email protected]_side/gems/guard-rspec-0.6.0/lib/guard/rspec/formatters/notification_rspec.rb", "spec/requests/password_resets_spec.rb"]... 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Home | My App</title> 
<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css"> 
<script src="/assets/application.js" type="text/javascript"></script> 
</head> 
<body> 
    <ul class="user_nav"> 
<li><a href="/signup">Sign up</a></li> 
     <li><a href="/login">log in</a></li> 
    </ul> 
<h1>Supply Side</h1> 
<p> 
    This is the home page for My App. 
</p> 

<h2>Visit the <a href="/secret">Secret Page</a>.</h2> 


</body> 
</html> 
F 

Failures: 

    1) PasswordResets emails user when requesting password reset 
    Failure/Error: click_link "Forgot Your Password?" 
    Capybara::ElementNotFound: 
     no link with title, id or text 'Forgot Your Password?' found 
    # (eval):2:in `click_link' 
    # ./spec/requests/password_resets_spec.rb:8:in `block (2 levels) in <top (required)>' 

Finished in 0.40915 seconds 
1 example, 1 failure 

Failed examples: 

rspec ./spec/requests/password_resets_spec.rb:4 # PasswordResets emails user when requesting password reset 
Done. 

मैंने यह दिखाने के लिए प्रिंट पेज.html जोड़ा है कि यह लॉगिन पेज पर नहीं जा रहा है।

gem 'rails', '3.2.0' 
gem 'heroku' 
gem 'jquery-rails' 
gem 'sorcery' 

group :production do 
    gem 'pg' 
end 

group :development, :test do 
    gem 'sqlite3' 
    gem 'rspec-rails' 
    gem 'factory_girl_rails' 
    gem 'capybara' 
    gem 'guard-rspec' 
    gem 'spork' 
    gem 'guard-spork' 
    gem 'rb-fsevent' 
    gem 'wirble' 
end 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

मेरे मार्गों:

get "logout" => "sessions#destroy", :as => "logout" 
    get "login" => "sessions#new", :as => "login" 
    get "signup" => "users#new", :as => "signup" 
    resources :users do 
    member do 
     get :activate 
    end 
    end 
    resources :sessions 
    match "/forgot_password" => "sessions#forgot_password" 
    resources :password_resets 
    match "/secret" => "pages#secret" 
    root :to => "pages#home" 

require 'rubygems' 
require 'spork' 

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. 
    # This file is copied to spec/ when you run 'rails generate rspec:install' 
    ENV["RAILS_ENV"] ||= 'test' 
    require File.expand_path("../../config/environment", __FILE__) 
    require 'rspec/rails' 
    require 'capybara/rspec' 

    # 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| 
    config.mock_with :rspec 

    # 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 

    config.treat_symbols_as_metadata_keys_with_true_values = true 
    config.filter_run :focus => true 
    config.run_all_when_everything_filtered = true 
    end 
end 

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

यहाँ मेरी gemfile है:

require 'spec_helper' 

describe "PasswordResets" do 
    it "emails user when requesting password reset" do 
    user = Factory(:user) 
    visit login_path 
    print page.html 
    click_link "Forgot Your Password?" 
    fill_in "Email", :with => user.email 
    click_button "Reset Password" 
    end 
end 

यहाँ मेरी कल्पना/spec_helper.rb है: यहाँ क्या परीक्षण लग रहा है की तरह है और अंत में मेरी कॉन्फ़िगरेशन/वातावरण/test.rb

# Settings specified here will take precedence over those in config/application.rb 

    # The test environment is used exclusively to run your application's 
    # test suite. You never need to work with it otherwise. Remember that 
    # your test database is "scratch space" for the test suite and is wiped 
    # and recreated between test runs. Don't rely on the data there! 
    config.cache_classes = true 

    # Configure static asset server for tests with Cache-Control for performance 
    config.serve_static_assets = true 
    config.static_cache_control = "public, max-age=3600" 

    # Log error messages when you accidentally call methods on nil 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Raise exceptions instead of rendering exception templates 
    config.action_dispatch.show_exceptions = false 

    # Disable request forgery protection in test environment 
    config.action_controller.allow_forgery_protection = false 

    # Tell Action Mailer not to deliver emails to the real world. 
    # The :test delivery method accumulates sent emails in the 
    # ActionMailer::Base.deliveries array. 
    config.action_mailer.delivery_method = :test 

    # Raise exception on mass assignment protection for Active Record models 
    config.active_record.mass_assignment_sanitizer = :strict 

    # Print deprecation notices to the stderr 
    config.active_support.deprecation = :stderr 

    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

मैं रूबी 1.9.3 पर रेल 3.2 चला रहा हूं। मुझे नुकसान हुआ है कि यह क्यों काम नहीं कर रहा है। अग्रिम में धन्यवाद!

+0

ध्यान दें कि परीक्षण जो एचटीएमएल प्रिंट कर रहा है वह मेरे होमपेज के लिए है, लॉगिन पेज नहीं। यह असफल रहा है क्योंकि यह login_path पर भी नहीं जा सकता है, भले ही लॉगिन पथ एक वैध मार्ग है। यह भी विफल रहता है: login_path current_path.should == "/ login" –

+0

पर जाएं मैंने यह देखने का भी प्रयास किया है कि कोई सत्र खुला था जो परीक्षण विफल होने का कारण बन रहा था, लेकिन यह परीक्षण दिखाता है कि यह समस्या नहीं है: https://gist.github.com/1677202 –

+0

लेकिन यह परीक्षण काम करता है: https://gist.github.com/1677265 तो कैपिबरा लॉगिन पृष्ठ पर सफलतापूर्वक पहुंचने के लिए मुखपृष्ठ पर लिंक का उपयोग करने में सक्षम है। –

उत्तर

2

अपने परीक्षण लॉग में, जब परीक्षण निष्पादन login_path पर जाते हैं, तो क्या आप शुरुआत में उस क्रिया को मार रहे हैं लेकिन फिर अपने मुखपृष्ठ पर रीडायरेक्ट किया जा रहा है?

+0

मैं इस ऐप में इतनी जल्दी था कि मैंने इसे मिटा दिया और सबकुछ पुनः स्थापित किया और यह ठीक काम कर रहा है। मुझे लगता है कि यह किसी तरह का एक विन्यास मुद्दा था। हालांकि यहां चिमिंग के लिए धन्यवाद! –

+0

@Lee, आपके द्वारा पोस्ट किए गए Google समूह में एक प्रतिक्रिया थी। आप उस लिंक को खो रहे थे जिसके लिए आप परीक्षण कर रहे थे। जैसा कि मैंने अतीत में पाया है, हमेशा मान लें कि आपको कोई समस्या मिलने से पहले कुछ गलत कर दिया है। ;-) मैं हमेशा परीक्षणों पर भरोसा नहीं करता हूं, या तो। एक परीक्षा पास करें, इसे तोड़ें, आगे बढ़ें। – Tass

+0

धन्यवाद टैस। मुझे एहसास नहीं हुआ कि किसी ने Google समूह में जवाब दिया था। मैं आपको एक गूंगा सवाल पर सिर देने के लिए समय निकालने की सराहना करता हूं। –

संबंधित मुद्दे