簡體   English   中英

在視圖規格中測試“動態”頁面標題(Rails 4 + RSpec 3)

[英]Test “dynamic” page title in a view spec (Rails 4 + RSpec 3)

我目前正在關注一個教程,但是Rails和Rspec已經發展,尤其是在編寫測​​試方面。

我的目標是測試當我訪問頁面“ http://domain.fr / users / 1 ”時,頁面標題是否遵循以下格式: "#{base_title} | #{@user.name}" ,其中base_title是常數。

以前,我看到可以在控制器規范中使用render_views,但這不是最好的方法,並且在Rails 4 / RSpec 3中不再存在。

我的最后嘗試是:

require 'rails_helper'

describe "users/show.html.erb", type: :view do
  it "Should finally render a correct title" do
    user = FactoryGirl.create(:user)
    assign(:user, user)
    render template: "users/show.html.erb", layout: "layouts/application.html.erb"
    expect(rendered).to have_selector("title", text: user.name)
  end
end

我使用輔助程序application.html.erb中進行渲染: <title><%= title %></title>

這是助手:

def title
  base_title = "Simple App du Tutoriel Ruby on Rails"
  @title.nil? ? base_title : "#{base_title} | #{@title}"
end

以及來自users_controller.rbshow方法:

def show
  @user = User.find(params[:id])
  @title = @user.name
end

我還向我的routes.rb文件添加了resources :users

上述測試失敗,因為僅呈現了標題的恆定部分。 因此,我認為未調用Users#show且未定義@title,但我看不到如何實現。

我的目標也是避免對視圖中的每個變量調用assign(),因為當您要渲染的變量很多時,它可能會出現問題。

謝謝你的幫助 :)

您忘記分配title

assign(:user, user)
assign(:title, user.name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM