2011-04-11 106 views
1

設計1.2紅寶石在軌道上測試註冊與設計

我在測試註冊時遇到了困難。當用戶點擊註冊時,他們已經登錄,我應該看到一條Flash消息。這有效,但我的測試失敗。不知道爲什麼。如何註冊工作?有沒有發生某種內部重定向?此步驟失敗:
Then I should see "You have registered successfully. If enabled, a confirmation was sent your e-mail."

在我的用戶模型中未啓用確認。

+0

這是測試輸出:(::)失敗的步驟(::) 預計以下元素的內容,包括「您已成功註冊啓用後,如果確認被髮送電子郵件。」: 你(RSpec :: Expectations :: ExpectationNotMetError) ./features/step_definitions/web_steps.rb:145:in'/ ^(?: | I)should see「([^」] *)「$ /' 功能/ registration.feature:38:在'那麼我應該看到「你已經成功註冊。如果啓用,確認已發送到您的電子郵件。「'我認爲你是被重定向的部分是問題,任何想法? – 2011-04-11 08:06:13

回答

5

從技術上講,你不應該覺得需要對設計機制進行單元測試 - 寶石本身是經過充分測試的。我可以理解想要確保它的行爲方式與你配置它一樣,因此:

成功驗證後設計肯定重定向。它會設置flash消息,然後重定向到您在路由文件中設置的根目錄,或者如果您嘗試訪問站點內的頁面並重定向到登錄頁面,它會將您重定向回到您的頁面試圖訪問。

爲了您的測試,請嘗試測試您是否重定向到您在routes.rb文件夾中設置的根目錄。即在色器件的指令,它說,設置它像

root :to => "home#index"

所以,在您的測試嘗試是這樣的:

require 'spec_helper' 

    describe YourController do 
     include Devise::TestHelpers 

     before (:each) do 
     @user = Factory.create(:user) 
     sign_in @user 
     end 

     describe "GET 'index'" do 
     it "should be successful" do 
      get 'index' 
      response.should be_success 
     end 
     it "should redirect to root" do 
      get 'index' 
      response.should redirect_to(root_url) 
     end 
    end 

您可以將閃光燈消息測試加入到這一點。希望這可以幫助!