Michael Hartl Rails教程(3.2)-第5章Rspec问题

Michael Hartl Rails教程(3.2)-第5章Rspec问题,rspec,ruby-on-rails-3.2,spork,railstutorial.org,Rspec,Ruby On Rails 3.2,Spork,Railstutorial.org,我已经完成了第五章和所有的练习。作为最后练习的一部分,MH让您为ApplicationHelper方法编写测试 完成后,单独的测试通过: ST2中的shift-command-T(使用sublime-text-2-ruby-tests包) 终端中的rspec spec/requests/user\u pages\u spec.rb 终端中的rspec spec/requests/static\u pages\u spec.rb 但是,如果在终端中使用rspec spec/运行所有测试,则会出

我已经完成了第五章和所有的练习。作为最后练习的一部分,MH让您为ApplicationHelper方法编写测试

完成后,单独的测试通过:

  • ST2中的
    shift-command-T
    (使用sublime-text-2-ruby-tests包)
  • 终端中的rspec spec/requests/user\u pages\u spec.rb
  • 终端中的rspec spec/requests/static\u pages\u spec.rb
但是,如果在终端中使用
rspec spec/
运行所有测试,则会出现以下错误:

/Users/anonymouscoward/rails/railstut/sample_app/spec/helpers/
application_helper_spec.rb:1:in `<top (required)>': uninitialized
constant ApplicationHelper (NameError)
/Users/anonymouscoward/rails/railstut/sample\u app/spec/helpers/
应用程序\u helper\u规范rb:1:in`:未初始化
常量ApplicationHelper(名称错误)
如果我运行spork并再次尝试
rspec spec/
,所有测试都会通过


我不确定我是否理解为什么它会这样工作,或者当我想运行所有测试时,我是否总是需要让spork运行。谢谢。

我不确定,但也许你忘了需要spec\u助手。 如果是这样,只需将其插入应用程序\u helper\u spec.rb的第一行即可

require 'spec_helper'

我遇到了同样的问题。谢谢你的修复

我在另一个论坛上发现了这种反应,这似乎有助于思考Spork与Rspec的关系

RSpec不会“运行”spec\u助手。默认情况下,rspec加载 以“_spec.rb”结尾,这取决于这些文件的要求 spec_helper.rb。


ApplicationHelper应该是一个字符串,而不是常量

application\u helper\u spec.rb中的第1行是哪个代码?谢谢。如果我理解正确的话,
spec\u helper.rb
中的Spork.prefork块将加载Rails环境并使ApplicationHelper可用。不,不必这样。rspec允许在descripe子句中使用类类型。当它在rspec输出中打印名称时,它将推断名称。实际上,这样做是为了利用rspec的隐式主题特性。
describe "ApplicationHelper" do