2012-06-14 27 views
4

我遇到了奇怪的問題。我從來沒有與Devise的寶石合作過。所以,我嘗試寫簡單的RSpec測試:Rails 3 + Devise + RSpec:undefined方法'訪問'

require 'spec_helper' 

describe "Admins" do 
    before(:each) do 
    @email = "[email protected]" 
    user = FactoryGirl.create(:user, :email => @email) 
    end 

    describe "sign in/out" do 
    describe "success" do 
     it "should sign a user in and out" do 
     visit new_user_session_path 
     end 
    end 
    end 
end 

而且我收到這樣的錯誤:

1) Admins sign in/out success should sign a user in and out 
    Failure/Error: visit new_user_session_path 
    NoMethodError: 
     undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_1:0x007fb2b7e393d0> 
    # ./spec/requests/admins_spec.rb:12:in `block (4 levels) in <top (required)>' 

Finished in 0.05646 seconds 

我廠:

FactoryGirl.define do 
    factory :user do |user| 
    user.admin true 
    user.password "qwerty" 
    user.sequence(:email) { |n| "user#{n}@user.com" } 
    end 
end 

路線:

 new_user_session GET /users/sign_in(.:format)  devise/sessions#new 
      user_session POST /users/sign_in(.:format)  devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)  devise/sessions#destroy 
      user_password POST /users/password(.:format)  devise/passwords#create 
     new_user_password GET /users/password/new(.:format) devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 
         PUT /users/password(.:format)  devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)  devise/registrations#cancel 
     user_registration POST /users(.:format)    devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)  devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)   devise/registrations#edit 
         PUT /users(.:format)    devise/registrations#update 
         DELETE /users(.:format)    devise/registrations#destroy 
+2

你'需要spec_helper「水豚/ rspec''? –

回答

4

visit是水豚方法,而不是Rspec。您必須將capybara寶石添加到您的Gemfile中,運行bundlerequire 'capybara/rspec',spec_helper,就像ArcaneRain指出的那樣。

+2

我正在做這個,仍然得到相同的錯誤。 –

+1

@LesterPeabody發現了什麼導致了錯誤?我有同樣的問題... – Daniel

2

你要水豚DSL添加到spec_helper

. 
. 
. 
RSpec.configure do |config| 
    . 
    . 
    . 
    config.include Capybara::DSL 
end 
相關問題