2014-02-05 144 views
0

使用的RSpec +水豚我有一個簡單的Rails應用程序,其進出口試圖引進這之後在url。林小學的測試。錯誤而在軌道4,5

我的應用程序的結構如下:

enter image description here

我試着去考單頁:所謂的主頁。

在規格/特徵/ main_pages_spec.rb我有以下代碼:

require 'spec_helper' 

feature "soadevise" do 
    feature "Main Page" do 
scenario "should have the content 'Main Page' " 
    visit '/main_page/home' 
    expect(page).to have_content('Main Page') 
    end 
end 

我的規格/ spec_helper.rb看起來是這樣的:

# 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 '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 } 

# Checks for pending migrations before tests are run. 
# If you are not using ActiveRecord, you can remove this line. 
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration) 

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.include Capybara::DSL 
    # 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 

    # Run specs in random order to surface order dependencies. If you find an 
    # order dependency and want to debug it, you can fix the order by providing 
    # the seed, which is printed after each run. 
    #  --seed 1234 
    config.order = "random" 
end 

當我在終端運行此命令:

MRMIOMP0903:soadevise $ bundle exec rspec spec/features/main_pages_spec.rb 

我得到以下錯誤:

/Users/am/Desktop/x/xx/rails_projects/mysql_apps/soadevise/ 
    spec/features/main_pages_spec.rb:6: 
    in `block (2 levels) in <top (required)>': undefined method `visit' for # 
    <Class:0x007fb7237377b0> (NoMethodError) 

    from /Users/am/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core 2.14.7/lib/rspec/core/example_group.rb:246:in `module_eval' 

    from /Users/am.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:246:in `subclass' 

    from /Users/am.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:232:in `describe' 

我的Gemfile包含這些:

#For testing 
group :development, :test do 
    gem "rspec-rails", "~> 2.14.1" 
end 

group :test do 
    gem "selenium-webdriver" 
    gem "capybara" 
end 

我refered這個link爲好。 有人可以建議我做錯了什麼?

+0

檢查了這一點:http://stackoverflow.com/questions/12485140/capybara-nomethoderror-undefined-method-visit-for – Jon

回答

0

你通話功能的兩倍。它應該是這樣的:

require 'spec_helper' 

    feature "soadevise Main Page" do 
     scenario "should have the content 'Main Page'" do 
     visit '/main_page/home' 
     expect(page).to have_content('Main Page') 
     end 
    end 
+0

嘿感謝。這比我想象的更簡單。 – banditKing