簡體   English   中英

Rspec-rails:測試布局是否包含樣式或javascripts

[英]Rspec-rails: Testing if layout includes styles or javascripts

我想測試我的'style.css'是否鏈接到我的頁面,同時使用某個布局呈現它,例如'application.html.erb':

所以這是規范:

規格/視圖/布局/ application.html.erb_spec.rb

  it 'should include styles for screen media' do
    render
    rendered.should have_selector('link',
      :href => '/stylesheets/style.css',
      :media => 'screen',
      :rel => 'stylesheet',
      :type => 'text/css'
    )
  end

我的application.html.erb看起來像:

應用程序/視圖/布局/ application.html.erb

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type">
    <%= stylesheet_link_tag :style, :media => 'screen' %>
    <%= javascript_include_tag :defaults %>
    <%= csrf_meta_tag %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

當我運行我的視圖規范時,它失敗了,因為

<link href="/stylesheets/style.css?1289599022" media="screen" rel="stylesheet" type="text/css">

渲染,和

<link rel='stylesheet' type='text/css' media='screen' href='/stylesheets/reset.css'/>

是期待。

這就是數字'?1289599022'在文件名后添加的欄目。 有關如何測試此功能的任何想法?

嘗試使用Rails stylesheet_path()幫助器代替...這將生成帶有時間戳的URL。

it 'renders a link to the stylesheet' do
  render
  rendered.should have_selector('link',
    :rel => 'stylesheet',
    :media => 'screen',
    :href => stylesheet_path('style')
  )
end

我今天遇到了同樣的問題而且非常令人沮喪。 我嘗試了上面的解決方案,但沒有訪問stylesheet_path(我正在使用rspec控制器測試,但直接從控制器測試渲染視圖)。 我嘗試包含必要的模塊以使其工作,但這只是給了我其他錯誤。 最后,我決定只在測試模式下更改rails,這樣它就不會生成資產時間戳。

只需編輯test.rb即可包含以下行:

ENV ['RAILS_ASSET_ID'] =''

代替

Testapp :: Application.configure做...結束

暫無
暫無

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

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