2012-11-23 80 views
3

我正在關注Michael Hartl關於Ruby on Rails的教程,我在third exercise of chapter 5上遇到了一些問題。我已經創建了確切的代碼作爲一個在書和utilities.rb現在只是還行中listing 5.38指示的application_helper_spec.rb,但是當我運行測試套件我得到這個錯誤:RoR教程Michael Hartl 5.27

C:.../sample_app/spec/helpers/appliaction_helper_spec.rb:1: syntax error, unexpected tIDENTIFIER, expecting $end (SyntaxError) 
desc...ApplicationHelper do 

該文件的第一行是:require 'spec_helper',當我刪除這一行時,我沒有看到這個錯誤,但我真的不認爲這是正確的解決方案。

下面是從文件中的代碼(同書的)

require 'spec_helper' 

    describe ApplicationHelper do 

    describe "full_title" do 
     it "should include the page title" do 
     full_title("foo").should =~ /foo/ 
     end 

     it "should include the base title" do 
     full_title("foo").should =~ /^Ruby on Rails Tutorial Sample App/ 
     end 

     it "should not include a bar for the home page" do 
     full_title("").should_not =~ /\|/ 
     end 
    end 
    end 

[編輯] spec_helper:

# This file is copied to spec/ when you run 'rails generate rspec:install' 
ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 

# Requires supporting ruby files with custom matchers and macros, etc, 
# in spec/support/ and its subdirectories. 
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    # ## Mock Framework 
    # 
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: 
    # 
    # config.mock_with :mocha 
    # config.mock_with :flexmock 
    # config.mock_with :rr 

    # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 

    # If you're not using ActiveRecord, or you'd prefer not to run each of your 
    # examples within a transaction, remove the following line or assign false 
    # instead of true. 
    config.use_transactional_fixtures = true 

    # If true, the base class of anonymous controllers will be inferred 
    # automatically. This will be the default behavior in future versions of 
    # rspec-rails. 
    config.infer_base_class_for_anonymous_controllers = false 

    # Run specs in random order to surface order dependencies. If you find an 
    # order dependency and want to debug it, you can fix the order by providing 
    # the seed, which is printed after each run. 
    #  --seed 1234 
    config.order = "random" 
end 

[編輯] application_helper.rb

module ApplicationHelper 

    #Returns the full title on a per-page basis. 
    def full_title(page_title) 
    base_title = "Ruby on Rails Tutorial Sample App" 
    if page_title.empty? 
     base_title 
    else 
     "#{base_title} | #{page_title}" 
    end 
    end 
end 
+0

你的spec_helper是什麼樣的? – MrDanA

+0

剛剛編輯代碼 –

+0

嘗試unindent'描述Application do ... end'塊 – Thanh

回答

0

你有文件名上的拼寫錯誤:

appliaction_helper_spec.rb => application_helper_spec.rb 
+0

實際上,這是我的錯誤,當輸入錯誤信息時,文件名是正確的 –

+0

哦,所以你應該再次檢查代碼,也許你錯過了什麼。 – Thanh

相關問題