Rspec RubyonRails 3教程第8章集成测试失败

Rspec RubyonRails 3教程第8章集成测试失败,rspec,integration-testing,railstutorial.org,Rspec,Integration Testing,Railstutorial.org,我一直在关注MichaelHartl的RubyonRails3教程。在第8章的集成测试之前,它一直运行良好。我运行了以下命令来创建集成测试: rails generate integration_test users 它创建了一个文件,然后我添加了两个测试;一个表示失败(空表单),一个表示成功(实际有效表单字段) 下面是由上述命令生成的users_spec.rb文件: require 'spec_helper' require 'database_cleaner' describe "Use

我一直在关注MichaelHartl的RubyonRails3教程。在第8章的集成测试之前,它一直运行良好。我运行了以下命令来创建集成测试:

rails generate integration_test users
它创建了一个文件,然后我添加了两个测试;一个表示失败(空表单),一个表示成功(实际有效表单字段)

下面是由上述命令生成的users_spec.rb文件:

require 'spec_helper'
require 'database_cleaner'

describe "Users" do

  describe "GET /users" do
    it "works! (now write some real specs)" do
      # Run the generator again with the --webrat flag if you want to use webrat methods/matchers
      get users_index_path
      response.status.should be(200)
    end
  end

  describe "signup" do

    describe "failure" do
      it "should not make a new user with empty data" do
        lambda do
          visit signup_path
          fill_in "Name",         :with => ""
          fill_in "Email",        :with => ""
          fill_in "Password",     :with => ""
          fill_in "Confirmation", :with => ""
          click_button
          response.should render_template('users/new')
          response.should have_selector("div#error_explanation")
        end.should_not change(User, :count)
      end #end "should not make a new user with empty data" do
    end #end describe failure

    describe "success" do
      it "should make a new user" do
        lambda do
          visit signup_path
          fill_in "Name",         :with => "Example User"
          fill_in "Email",        :with => "user@example.com"
          fill_in "Password",     :with => "foobar"
          fill_in "Confirmation", :with => "foobar"
          click_button
          response.should have_selector("div.flash.success", :content => "Welcome")
          response.should render_template('users/new')
        end.should change(User, :count).by(1)
      end
    end #end success
  end #end describe signup
end #end describe Users
我不知道为什么,但是所有的测试都失败了。我错过了什么明显的东西吗?我已经运行了rakedb:migrate,清理了数据库,但我就是不明白

控制台错误来自:
rspec spec/requests/users\u spec.rb

JorgeZapata:sample_app jorgezapata$ rspec spec/requests/users_spec.rb
Rack::File headers parameter replaces cache_control after Rack 1.5.
FFF

Failures:

  1) Users GET /users works! (now write some real specs)
     Failure/Error: get users_index_path
     NameError:
       undefined local variable or method `users_index_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007ffd9bbd6550>
     # ./spec/requests/users_spec.rb:8:in `block (3 levels) in <top (required)>'

  2) Users signup failure should not make a new user with empty data
     Failure/Error: visit signup_path
     ActionView::Template::Error:
       /Users/jorgezapata/rails_projects/sample_app/app/views/users/new.html.erb:17: syntax error, unexpected tSTRING_BEG, expecting ')'
       ....label :password_confirmation "Confirmation" );@output_buffe...
       ...                               ^
     # <internal:prelude>:10:in `synchronize'
     # ./spec/requests/users_spec.rb:18:in `block (5 levels) in <top (required)>'
     # ./spec/requests/users_spec.rb:17:in `block (4 levels) in <top (required)>'

  3) Users signup success should make a new user
     Failure/Error: visit signup_path
     ActionView::Template::Error:
       /Users/jorgezapata/rails_projects/sample_app/app/views/users/new.html.erb:17: syntax error, unexpected tSTRING_BEG, expecting ')'
       ....label :password_confirmation "Confirmation" );@output_buffe...
       ...                               ^
     # <internal:prelude>:10:in `synchronize'
     # ./spec/requests/users_spec.rb:33:in `block (5 levels) in <top (required)>'
     # ./spec/requests/users_spec.rb:32:in `block (4 levels) in <top (required)>'

Finished in 0.12243 seconds
3 examples, 3 failures

Failed examples:

rspec ./spec/requests/users_spec.rb:6 # Users GET /users works! (now write some real specs)
rspec ./spec/requests/users_spec.rb:16 # Users signup failure should not make a new user with empty data
rspec ./spec/requests/users_spec.rb:31 # Users signup success should make a new user
JorgeZapata:sample_app JorgeZapata$rspec spec/requests/users_spec.rb
Rack::File headers参数取代Rack 1.5之后的cache_控件。
FFF
失败:
1) 用户获得/用户工作!(现在写一些真实的规格)
失败/错误:获取用户\u索引\u路径
名称错误:
未定义的局部变量或方法“users\u index\u path”#
#./spec/requests/users\u spec.rb:8:in'block(3层)in'
2) 注册失败的用户不应使用空数据创建新用户
失败/错误:访问注册路径
ActionView::模板::错误:
/Users/jorgezapata/rails\u projects/sample\u app/app/views/Users/new.html.erb:17:语法错误,意外的tSTRING\u BEG,应为“')”
..标签:密码确认“确认”)@输出_buff。。。
...                               ^
#:10:在“同步”中
#./spec/requests/users_spec.rb:18:in'block(5层)in'
#./spec/requests/users_spec.rb:17:in'block(4层)in'
3) 用户注册成功应成为新用户
失败/错误:访问注册路径
ActionView::模板::错误:
/Users/jorgezapata/rails\u projects/sample\u app/app/views/Users/new.html.erb:17:语法错误,意外的tSTRING\u BEG,应为“')”
..标签:密码确认“确认”)@输出_buff。。。
...                               ^
#:10:在“同步”中
#./spec/requests/users_spec.rb:33:in'block(5级)in'
#./spec/requests/users\u spec.rb:32:in'block(4层)in'
以0.12243秒完成
3例,3次失败
失败的示例:
rspec./spec/requests/users_spec.rb:6#users GET/users works!(现在写一些真实的规格)
rspec./spec/requests/users_spec.rb:16#用户注册失败不应使新用户具有空数据
rspec./spec/requests/users_spec.rb:31#如果用户注册成功,则应创建一个新用户

提前谢谢,请告知

你在错误中找到了答案

1:

路径不存在。从控制台运行
rake routes
,以获取可用路由的列表。很可能它是
用户\u路径

2和3:

ActionView::Template::Error:
   /Users/jorgezapata/rails_projects/sample_app/app/views/users/new.html.erb:17: syntax error, unexpected tSTRING_BEG, expecting ')'
您的app/views/users/new.html.erb文件第17行出现语法错误


学习读取错误输出。它会告诉你(通常)你需要知道的一切。

谢谢斯图尔特!我的其他错误也都是语法错误。这一切现在都起作用了:)
ActionView::Template::Error:
   /Users/jorgezapata/rails_projects/sample_app/app/views/users/new.html.erb:17: syntax error, unexpected tSTRING_BEG, expecting ')'