[英]Enabling JavaScript for an rspec 2.10 Rails 3.1 view spec test
[英]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.rb的show方法:
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.