2014-02-06 41 views
0

我想通過設計驗證用戶,然後訪問其帳戶頁面並更改其密碼。無法驗證用戶以更改其密碼

describe Users::UsersController do 
    describe "abc" do 

    it "abc" do 
     user = FactoryGirl.create :user 
     sign_in :user, user 
     visit edit_user_registration_path 

     save_and_open_page # -- user isn't authenticated yet! 

     fill_in # ....... 
    end 

    end 

然而,這個測試效果很好

it "should sign in" do 
    user = FactoryGirl.create :user 
    sign_in :user, user 
    subject.current_user.should_not be_nil 
end 
+0

您可以將您的控制檯日誌......,看看它爲什麼失敗 –

+0

@RahulSingh,如何記錄呢? –

+0

@RahulSingh,沒有例外,測試在「sign_in」之後運行良好。 –

回答

0

我所做的是 - 創建內部規範文件/支持/ utilities.rb 和我utilities.rb有這個

def sign_in(user) 
    visit new_user_session_path 
    fill_in "Email", with: user.email 
    fill_in "Password", with: user.password 
    click_button "Sign in" 
end 

在spec/requests/authentication_pages_spec.rb(它由我創建)之後,並且設計了這種認證方式

require 'spec_helper' 

describe 'UserPages' do 

    subject { page } 

    describe "allow registered user to sign in successfully" do 
     before do 
      user = FactoryGirl.create(:user) 
      sign_in user 
     end 
     it { should have_link("Logout") } 
     it { should_not have_link("Login") } 
    end 

    describe "edit" do 
     before do 
      @user = FactoryGirl.create(:user)  
      sign_in @user 
      visit edit_user_registration_path  
     end 

     describe "with valid information" do 
      let!(:new_name) { "New Name" } 
      let!(:new_password) { "newpassword" } 

      before do 
      fill_in "Name",      with: new_name 
      fill_in "Email",      with: @user.email 
      fill_in "user[password]",    with: new_password 
      fill_in "user[password_confirmation]",  with: new_password 
      click_button "Update" 
      end 
      specify { @user.reload.name.should == new_name } 
     end 
    end 
end 

和我的規格/ factories.rb有這個

FactoryGirl.define do 
    factory :user do 
    sequence(:username) { |n| "Person_#{n}" } 
    sequence(:name) { |n| "Person #{n}" } 
    sequence(:email) { |n| "person_#{n}@example.com"} 
    password "foobar123" 
    password_confirmation "foobar123" 
    end 
end 
+0

但爲什麼'sign_in:user,user'工作? –

+0

bcoz sign_in m/d只需要一個參數,它應該是用戶不是:用戶, –