[問題] Rails 3 測試view render
最近在練習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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章