Rspec тестирование макета - PullRequest
       0

Rspec тестирование макета

14 голосов
/ 13 декабря 2010

Как проверить, что в RSpec используется определенный макет? Я попробовал template.layout, response.layout и response.should render_template ("layout") без удачи.

Ответы [ 4 ]

18 голосов
/ 15 декабря 2010

В rspec 2, в спецификации контроллера, вы используете render_template, как вы уже догадались, но вам нужно указать путь относительно каталога views.Так что если ваш макет app / views / layouts / mylayout.html.erb, ваша спецификация выглядит следующим образом:

response.should render_template "layouts/mylayout"
6 голосов
/ 30 декабря 2014

Обновленный синтаксис для RSpec 3:

expect(response).to render_template(:index) # view
expect(response).to render_template(layout: :application) # layout

Документы RSpec

Или, если вы предпочитаете @ однострочник Flov , вы можете написать:

expect(response).to render_template(:index, layout: :application)

Обратите внимание, что render_template делегирует assert_template. Вы можете найти эти документы здесь: ActionController assert_template .

5 голосов
/ 25 мая 2011

Кроме того, вы можете протестировать макет и рендеринг действий в одной строке в rspec-2:

response.should render_template(%w(layouts/application name_of_controller/edit))
1 голос
/ 13 декабря 2010
# rspec-rails-1.3.x for rails-2
describe HomeController do
  describe "the home page" do
    it "should use the :home_page layout" do
      get :index
      response.layout.should == "layouts/home_page"
    end
  end
end

# rspec-2 for rails-3 
describe "GET index" do
  it "renders the page within the 'application' layout" do
    get :index
    response.should render_template 'layouts/application' # layout
    response.should render_template 'index'               # view
  end
end
...