Как проверить окончательный вид в Rspec после redirect_to? - PullRequest
0 голосов
/ 24 января 2012

Я запускаю тесты 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

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

Это способ проверки флэш-сообщений:

it "should have flash message to notify user that signup was successful" do
    post :create, :user => @attr
    flash[:success].should eql "You have successfully signed up!"
end
0 голосов
/ 24 января 2012

Рассматривали ли вы использование shoulda-matchers для тестирования контроллеров с помощью rspec.Они позволяют использовать следующее для простого тестирования флэш-сообщений:

it { should set_the_flash.to(/created successfully/i) }

Вам не нужно запрашивать селектор на странице.В качестве бонуса вы получаете набор других средств сравнения для тестирования маршрутов, перенаправлений, визуализации, макета и HTTP-ответов.Мне было легче отследить проблемы, когда я их использовал.

См. musta-matchers , если кажется, что это может помочь.

...