Я запускаю тесты Rails с Rspec и для действий, которые перенаправляют, это проверка страницы перенаправления, а не конечной страницы назначения.Это имеет смысл, но это не то, что я хочу.Я хочу убедиться, что флеш-сообщение отображается.Разве нельзя правильно проверить окончательный вид в перенаправленном месте назначения с помощью have_selector?Например, простое действие создания:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@page_title = @user.name
end
def create
@user = User.new(params[:user])
if @user.save
flash[:success] = "You have successfully signed up!"
redirect_to @user
else
flash[:error] = "There were errors signing up."
@page_title = "Sign Up"
render 'new'
end
end
завершается с ошибкой в этом тесте:
it "should have flash message to notify user that signup was successful" do
post :create, :user => @attr
response.should have_selector("div.flash-success")
end
с этой ошибкой:
Failure/Error: response.should have_selector("div.flash-success")
expected following output to contain a <div.flash-success/> tag:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>You are being <a href="http://test.host/users/1">redirected</a>.</body></html>
Среда:
- Rails 3.2.0
- Ruby 1.9.3p0
- Rspec 2.8.1
- Webrat 0.7.3