Сбой автотестирования Rails 3 Rspec 2.0.1: учебное пособие по Ruby on Rails от М. Хартла

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Я использую Rails 3.0.1 и Rspec 2.0.1. Я следую руководству М. Хартла по Ruby on Rails, и у меня проблема с неудачными тестами на уроке 5: заполнение макета.

Когда я запускаю автотестирование и постоянно получаю эту ошибку и, похоже, не могу понять, почему:

 Failures:
  1) UsersController GET 'new' should have the right title
     Failure/Error: response.should have_selector('title', :content => "Sign Up")
     expected following output to contain a <title>Sign Up</title> tag:
     <!DOCTYPE html>
     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
     <title>Ruby on Rails Tutorial Sample App | Sign up</title>
     <!--[if lt IE 9]>
     <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js""></script>
     <![endif]--><link href="/stylesheets/blueprint/screen.css?1313951692" media="screen" rel="stylesheet" type="text/css">
     <link href="/stylesheets/blueprint/print.css?1313951692" media="media" rel="stylesheet" type="text/css">
     <!--[if lt IE 8]><link href="/stylesheets/blueprint/ie.css?1313951692" media="screen" rel="stylesheet" type="text/css" /><[endif]--><link href="/stylesheets/custom.css?1319319986" media="screen" rel="stylesheet" type="text/css">
     </head>
     <body>
        <div class="container">

        <nav class="round"><ul>
     <li><a href="/">Home</a></li>
                <li><a href="/help">Help</a></li>
                <li><a href="#">Sign in</a></li>
            </ul></nav></header><section class="round"><h1>Users#new</h1>
     <p>Find me in app/views/users/new.html.erb</p>

            </section><footer><nav class="round"><ul>
     <li><a href="/about">About</a></li>
                <li><a href="/contact">Contact</a></li>
                <li><a href="http://news.railstutorial.org">News</a></li>
                <li><a href="http://railstutorial.org">Rails Tutorial</a></li>
            </ul></nav></footer>
     </div>
       </body>
     </html>
     # ./spec/controllers/users_controller_spec.rb:14:in `block (3 levels) in <top (required)>'
 

Ответ №1:

Проблема, с которой вы столкнулись, заключается в том, что в вашем тесте у вас

 response.should have_selector('title', :content => "Sign Up")
 

Но ваш HTML-код

  <title>Ruby on Rails Tutorial Sample App | Sign up</title>
 

Ваш тест и исходный код HTML не совпадают. Введите верхний регистр «up» в исходном коде, и все будет готово.

Комментарии:

1. @TomKim Да, мы все это делаем. Не так давно (менее недели назад) я проделал то же самое, работая с учебником. Кроме того, я вижу, вы здесь новичок. Рядом с моим ответом есть серая галочка, если я предоставил правильное решение, вы должны проверить его, чтобы показать, что на этот вопрос есть приемлемый ответ. Если вы будете задавать вопросы в будущем, у вас будет больше шансов получить лучший ответ, если у вас высокий процент принятых ответов.

Ответ №2:

Я думаю, это проблема случая. Содержимое не обязательно должно совпадать в точности, но случай соответствует.

Да…то, что сказал Ной.