如何配置RSpec以在lib文件夹中查找规范?

时间:2016-08-10 10:28:00

标签: ruby-on-rails ruby rspec load-path

我在本教程http://apionrails.icalialabs.com/book/frontmatter

之后使用Rails 5.0创建了一个小API

我正在尝试运行位于app/config/lib的测试,但RSpec将找不到测试。

我尝试添加config.autoload_paths << Rails.root.join('lib')config.autoload_paths += %W(#{config.root}/lib)app/config/application.rb

这是我的代码:

$ /app/config/application.rb

#required files go here, deleted for clarity.

Bundler.require(*Rails.groups)

module MarketPlaceApi
  class Application < Rails::Application

    # don't generate RSpec tests for views and helpers
    config.generators do |g|
      g.test_framework :rspec, fixture: true
      g.fixture_replacement :factory_girl, dir: 'spec/factories'
      g.view_specs false
      g.helper_specs false
      g.stylesheets = false
      g.javascripts = false
      g.helper = false
    end

  config.autoload_paths += %W(#{config.root}/lib)
  end
end

测试

$ app/config/lib/spec/test_spec.rb

require 'spec_helper'

describe ApiConstraints do
  #test goes here
end

如何添加lib文件夹,以便RSpec运行其中的测试?

提前致谢。

1 个答案:

答案 0 :(得分:1)

RSpec没有在autoload_paths中寻找测试。如果您在没有参数的情况下运行rspecrake spec,则RSpec默认情况下会查找spec目录。如果要在其他目录中运行规范,请将该目录作为参数提供给rspec

rspec app/config/lib/spec

但是,将您的规范保存在spec目录中,与applib中的代码分开是一般惯例,所以我要移动您的规格为spec/lib。然后RSpec将毫不费力地找到它们。