Как я могу проверить заголовок страницы от SPECES RSSEC View?
-
25-09-2019 - |
Вопрос
Я изучаю RSPEC 2 с помощью рельсов 3. Для того, чтобы установить содержимое тега в макете для каждой страницы, у меня есть помощник, который можно использовать для установки заголовка, а затем вернуть его:
def page_title(subtitle=nil)
if @title.nil?
@title = ["Site Name"]
end
unless subtitle.nil?
@title << subtitle
end
@title.reverse.join " - "
end
Помощник называется как от макета, где он возвращает заголовок, а отдельные представления, где он устанавливает заголовок. Теперь я хочу проверить в представлении Specs, что заголовок устанавливается правильно. Поскольку макет не отображается, я решил вызововать Page_Title из спецификации и убедитесь, что возвращаемое значение - это то, что я ожидаю, что он будет. Однако это не работает, и всегда просто возвращает «имя сайта». Что я должен делать?
Решение
Я не уверен, что это то, что вы имели в виду, но вы можете проверить макет напрямую:
require 'spec_helper'
include ApplicationHelper
describe "layouts/application" do
it "should add subtitle to page title" do
page_title("Subtitle")
render
rendered.should have_selector('title:contains("Subtitle - Site Name")')
end
end
РЕДАКТИРОВАТЬ
Вы также можете проверить, что page_title
Способ вызывается в поле зрения:
describe "mycontroller/index" do
it "should set subtitle" do
view.should_receive(:page_title).with("Subtitle")
render
end
end
или вы могли бы использовать тест контроллера с render_views
:
describe Mycontroller do
render_views
it "sets the page title" do
get :index
response.body.should contain("Subtitle - Site Name")
end
end
Другие советы
Чтобы проверить заголовок страницы в представлении SEP TRY:
require "spec_helper"
describe "controller/view.html.erb" do
it "renders page title with 'Title | MySite'" do
render template: "controller/view", layout: "layouts/application"
rendered.should have_selector("title", text: "Title | MySite")
end
end
Поскольку визуализация называется за пределами контроллера, ему нужно рассказать о макете.