最終編集:
アプリケーションのレイアウトとヘッダーに集中するという @PeterAlfvin の提案のおかげで、修正することができました。問題が何であるかを正確に把握することはできませんでしたが、ヘッダーの何かが原因で、カピバラがページの残りの部分を「見る」ことができませんでした. を削除<%= render 'layouts/header' %>
し、内部のヘッダーを再構築し、application.html.erb
機能するようになったら、それをパーシャルに引き出して、render ステートメントを置き換えました。問題を突き止めようと、古いヘッダー ファイルと新しいヘッダー ファイルの両方をいじりましたが、まだ成功していません。そのため、私のテストは少し脆弱に見えますが、問題が再び発生した場合は、少なくともどこを見ればよいかがわかります。
編集:反対票を投じたいと思われる場合は、先に進んでください。ただし、あなたのコメントがこれを理解するのに役立つかもしれないので、私が見落としたものや調査に失敗したものを教えてください.
これを修正しようとして HOURS を検索しましたが、何が起こっているのかわかりません。私は、最後の日を見つめていない人には明らかな単純なものが欠けていると確信しています. とにかく、それが私の希望です。
私の Rspec/capybara リクエスト仕様はすべて失敗していますが、ブラウザーでページを表示すると、仕様が見つけられなかったすべての要素が明らかにそこにあります。私が知る限り、Capybara はページ全体を認識していません。save_and_open_page はほぼ空白のページを返します。以下の仕様で見られる失敗は普遍的です.仕様はページタイトルを見ることができますが、ページ本文には何も見えません. すべてのタイトル テストが必要なときにパスするため、すべてのルートが適切であると確信しています。
仕様/リクエスト/static_pages_spec.rb
require 'spec_helper'
describe "StaticPages" do
subject { page }
describe "About page" do
before { visit about_path }
it { save_and_open_page;
should have_selector('title', text: 'Company Name | About') }
it { should have_selector('h1', text: 'About stuff') }
it { should have_content('About paragraph') }
end
#more specs...
end
結果:
5) StaticPages About page
Failure/Error: it { should have_selector('h1', text: 'About stuff') }
expected css "h1" with text "About stuff" to return something
# ./spec/requests/static_pages_spec.rb:28:in `block (3 levels) in <top (required)>'
6) StaticPages About page
Failure/Error: it { should have_content('About paragraph') }
expected there to be content "About paragraph" in "Company Name | About\n\t\n\t\t"
# ./spec/requests/static_pages_spec.rb:29:in `block (3 levels) in <top (required)>'
save_and_open_page によってブラウザで開いたページの「ソースの表示」出力は次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Company Name | About</title>
<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css">
<script src="/assets/application.js" type="text/javascript"></script><!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header class="navbar navbar-fixed-top navbar-inverse"><div class="navbar-inner">
</div></header>
</body>
</html>
したがって、ソースと仕様 6 の応答メッセージに基づいて、ページ タイトル以外のコンテンツを検索していないように見えます。フォーム要素、ボタンなどを探すテストがあり、それらをさまざまな方法 (ラベル、ID、名前) で識別しようとしましたが、カピバラはそれらを見つけることができません。これらのページをブラウザで表示すると、すべてが明確に表示され、正しくラベル付けされています。
ブラウザーで About ページにアクセスすると、上記の本文コンテンツとは対照的に、これが本文のページ ソースです。
<body>
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href='/'>Company Name</a>
<ul class="nav pull-left">
<li><a href="/products">Products</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<ul class="nav pull-right">
<li><a href="/users/sign_in">Sign in</a></li>
</ul>
</div>
</header>
<div class="container-fluid">
<div class="row-fluid">
<div class="span10 offset2"></div>
<h1>About stuff</h1>
<p>About paragraph</p>
</div>
</div>
</body>
Gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.13'
gem 'bootstrap-sass', '2.1'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
gem 'jquery-rails'
gem 'devise'
gem 'foreigner'
gem 'paper_trail'
group :development, :test do
gem 'sqlite3', '1.3.7'
gem 'rspec-rails', '2.11.0'
gem 'letter_opener'
gem 'factory_girl_rails', '4.1.0'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '1.2.3'
end
group :test do
gem 'capybara', '1.1.2'
# gem 'rb-inotify', '0.8.8'
# gem 'libnotify, '0.5.9'
gem 'shoulda-matchers'
gem 'accept_values_for'
end
group :production do
gem 'pg', '0.12.2'
end
これを整理するための助けがあれば大歓迎です。追加情報を含める必要がある場合はお知らせください。
編集してerbファイルを追加
アプリ/ビュー/レイアウト/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<%= render 'layouts/header' %>
<div class="container-fluid">
<div class="row-fluid">
<div class="span10 offset2">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value%></div>
<% end %>
</div>
<%= yield %>
<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>
</div>
</div>
</body>
</html>
アプリ/ビュー/レイアウト/_header.html.erb
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href='/'>Company Name</a>
<ul class="nav pull-left">
<li><%= link_to "Products", products_path %></li>
<li><%= link_to "About", about_path %></li>
<li><%= link_to "Contact", contact_path %></li>
</ul>
<% if user_signed_in? %>
<ul class="nav pull-right">
<li><strong><%= current_user.email %></strong></li>
<li><%= link_to 'Account', account_path %></li>
<li><%= link_to "Sign out", destroy_user_session_path, method: :delete %></li>
</ul>
<% else %>
<ul class="nav pull-right">
<li><%= link_to "Sign in", new_user_session_path %></li>
</ul>
<% end %>
</div>
</header>
アプリ/ビュー/レイアウト/_footer.html.erb
<footer class="footer">
<small>Company Name Price Management</small>
</footer>
アプリ/ビュー/static_pages/about.html.erb
<% provide(:title, 'About') %>
<h1>About stuff</h1>
<p>About paragraph</p>