RSpec显式标记了从NameError失败的情况

时间:2014-12-31 18:22:06

标签: ruby-on-rails ruby rspec

我目前正在使用rspec-core-3.1.7我已经继承的rails应用程序。看起来之前的所有者在他们的测试套件上取得了很大的进步,但我似乎无法让它正常工作。我的spec_helper.rbrails_helper.rb来自rails generate rspec:install,并进行了一些小调整。

测试的设置方式如下:

require "rails_helper"

RSpec.describe FooController, :type => :routing do
  ...

这是相关的错误消息:

athan@spacerobot:~/website$ rake spec:routing
/home/athan/.rbenv/versions/2.1.2/bin/ruby -I/home/athan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib:/home/athan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rspec-support-3.1.2/lib /home/athan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/exe/rspec --pattern ./spec/routing/\*\*/\*_spec.rb
/home/athan/website/spec/routing/foo_routing_spec.rb:3:in `<top (required)>': uninitialized constant FooController (NameError)
    from /home/athan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load'
    from /home/athan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files'
...

但由于某些原因,在抛出NameError之前,我无法rspec找到FooController。在描述RSpec测试时,假装存在这些类是一种常见的约定吗?他们会从哪里来......?我该如何正确定义测试描述?

1 个答案:

答案 0 :(得分:0)

我对rails使用rspec的方式不太熟悉,但我确实对我的测试套件使用了很多。我怀疑你需要将fooController的require添加到spec_helper.rb或rails_helper.rb中。在我的例子中,我需要spec_helper.rb中的所有测试框架组件,以便它们可用于所有要使用的测试。希望有所帮助。