[問題] Rails 3 測試view render

看板Ruby作者 (Egist)時間14年前 (2010/10/08 20:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
最近在練習rails的各種測試,不過遇到了一點問題 Orz 程式主要內容是讓使用者填寫註冊資料並送出,如果註冊成功 會寫入flash[:notice]並redirect到首頁並顯示flash訊息。 在rails的測試程式中,我用assert_select去確認,flash是不是有被正確顯示。 現在的情況是,如果從瀏覽器直接填資料、送出後,可以成功跳轉頁面並且也顯示 出flash的內容,但是用 assert_select 卻顯示錯誤,說沒有顯示flash。 想請問一下可能是哪個環節有問題,謝謝各位。 以下是一些程式片段: 檔案: test/functional/users_controller_test.rb require 'test_helper' class UsersControllerTest < ActionController::TestCase ... test "POST 'create' successful case" do before_count = User.count post :create, :user=>valid_user_attr assert_redirected_to root_url assert_equal 'Sign up successfully!', flash[:notice] assert_equal before_count+1, User.count assert_select 'ul#notice_messages>li' <==測試failure end ... end 檔案: app/controllers/users_controller.rb class UsersController < ApplicationController ... def create @new_user = User.new(params[:user]) if @new_user.save flash[:notice] = 'Sign up successfully!' redirect_to :controller=>'home', :action=>'index' else flash.now[:alert] = 'Sign up fail!' render 'users/new' end end end 檔案: app/views/layouts/application.html.erb <html> ... <section id="system_messages"> <% if flash[:notice] %> <ul id="notice_messages" class="message notice"> <li><%= flash[:notice] %></li> </ul> <% end %> <% if flash[:alert] %> <ul id="alert_messages" class="message alert"> <li><%= flash[:alert] %></li> </ul> <% end %> </section> ... </html> 最後這是ruby --version的內容: ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.0], MBARI 0x6770, Ruby Enterprise Edition 2010.02 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.91.127.135
文章代碼(AID): #1ChnMdlL (Ruby)
文章代碼(AID): #1ChnMdlL (Ruby)