Тестирование на заголовок не работает с rspec / capybara - PullRequest
3 голосов
/ 09 сентября 2011

Я создаю свое первое веб-приложение на Rails 3.0.10 и пытаюсь исправить свои тесты титров в моем Pages_Controller_Spec, как я узнал из учебника по ruby ​​on rails, однако, хотя названия в браузере верны, тесты терпит неудачу. Я установил Capybara, но еще не использовал - это может помешать?

Вы увидите, что сейчас это очень просто, но я хочу начать с нуля с основательного набора тестов. Любая помощь будет высоко ценится!

Вот моя спецификация: (Простое "должно быть хорошо проходит успешно")

require 'spec_helper'

describe PagesController do

  render_views

   describe "GET 'home'" do

    it "should be successful" do
      get 'home'
      response.should be_success
    end

    it "should have the right title" do
      get 'home'
      response.should have_selector("title", 
                  :content => "Home")
    end

  end

  describe "GET 'contact'" do
    it "should be successful" do
      get 'contact'
      response.should be_success
    end

    it "should have the right title" do
      get 'contact'
      response.should have_selector("title", :content => "Contact")
    end

  end

end

Я отображаю заголовок в макете приложения следующим образом:

<!DOCTYPE html>
<html>
<head>
  <title><%= @title %></title>
  <%= stylesheet_link_tag :all %>
  <%= javascript_include_tag :defaults %>
  <%= csrf_meta_tag %>
</head>
<body>

<%= yield %>

</body>
</html>

Вот как я устанавливаю переменную экземпляра:

<% @title = "Home" %>

<h1>Pages#home</h1>
<p>Find me in app/views/pages/home.html.erb</p>

РЕДАКТИРОВАТЬ: Вот тестовый вывод

Failures:

1) PagesController GET 'home' should have the right title
Failure/Error: response.should have_selector("title",
expected css "title" to return something
# ./spec/controllers/pages_controller_spec.rb:15:in `block (3 levels) in <top (required)>'

2) PagesController GET 'contact' should have the right title
Failure/Error: response.should have_selector("title", :content => "Contact")
expected css "title" to return something
# ./spec/controllers/pages_controller_spec.rb:29:in `block (3 levels) in <top (required)>'

Finished in 0.14245 seconds
4 examples, 2 failures

РЕДАКТИРОВАТЬ 2: Добавление того, что ставит response.body

Running: spec/controllers/pages_controller_spec.rb
.<!DOCTYPE html>
<html>
<head>
  <title>Home</title>

  <script src="/javascripts/prototype.js?1315409404" type="text/javascript"></script>
<script src="/javascripts/effects.js?1315409404" type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1315409404" type="text/javascript"></script>
<script src="/javascripts/controls.js?1315409404" type="text/javascript"></script>
<script src="/javascripts/rails.js?1315409404" type="text/javascript"></script>
<script src="/javascripts/application.js?1315409404" type="text/javascript"></script>

</head>
<body>


<h1>Pages#home</h1>
<p>Find me in app/views/pages/home.html.erb</p>


</body>
</html>

1 Ответ

6 голосов
/ 09 сентября 2011

Оказывается, я не установил WebRat как драгоценный камень. Я предполагаю, что это произошло от того, что я взял свои тестовые гемы из Railscast и использовал некоторые тесты, которые я выучил в руководстве по Hartl.

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...