Автотест, не прошедший проверку на интеграционный тест - PullRequest
0 голосов
/ 15 января 2012

Я прохожу учебное пособие по RoR от Hartl и сейчас нахожусь в разделе для интеграционного тестирования. В соответствии с инструкциями я изменил .autotest с:

require 'autotest/growl'
require 'autotest/fsevent'
require "autotest/restart" 

Autotest.add_hook :initialize do |autotest|
  autotest.add_mapping(/^spec\/requests\/.*_spec\.rb$/) do
    autotest.files_matching(/^spec\/requests\/.*_spec\.rb$/)
  end  
end

Моя установка:

Z-Kidds-MacBook-Air:sample_app zkidd$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]
Z-Kidds-MacBook-Air:sample_app zkidd$ rails -v
Rails 3.1.3

Моя ошибка зачитывается так:

/Users/zkidd/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -rrubygems -S /Users/zkidd/.rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/bin/rspec --tty '/Users/zkidd/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb' '/Users/zkidd/rails_projects/sample_app/spec/requests/layout_links_spec.rb'
Exception encountered: #<SyntaxError: /Users/zkidd/rails_projects/sample_app/spec/requests/layout_links_spec.rb:7: syntax error, unexpected ':', expecting ')'
    response.should have_selector('title,' :content => 'Home')
                                            ^
/Users/zkidd/rails_projects/sample_app/spec/requests/layout_links_spec.rb:7: syntax error, unexpected ')', expecting keyword_end>
backtrace: . . . .

Я вижу, что ошибка содержит ту маленькую морковку под: content, говорящую, что автотест ожидает ")" вместо двоеточия. Но учебник конкретизирует именно то, что я написал. Вот это layout_links_spec.rb

require 'spec_helper'

describe "LayoutLinks" do

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title,' :content => 'Home')
  end

  it "should have a Contact page at '/contact'" do
      get '/contact'
      response.should have_selector('title,' :content => "Contact")
    end

  it "should have an About page at '/about'" do
    get '/contact'
    response.should have_selector('title,' :content => "About")
  end

  it "should have a Help page at '/help'" do
    get '/help'
    response.should have_selector('/title' :content => "Help")
  end

end 

1 Ответ

1 голос
/ 15 января 2012

В коде, который вы разместили, все строки, как

response.should have_selector('title,' :content => 'Home')

должно быть

response.should have_selector('title', :content => 'Home')

(запятая за пределами строки) .

Для последнего теста это также 'title' вместо '/title'

...