没有rails的RSpec没有加载spec / support中的文件
在文件spec / support / factory_girl.rb中我有
fail "At least this file is being required" RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods end
我有一些规范代码
require 'pmc_article' require 'pmc_article_parser' require 'factory_girl' require_relative './factories/pmc_article_factory' RSpec.describe PMCArticle do let(:pmc_article) do build(:pmc_article) end it 'parses pmid' do expect(pmc_article.article_id_pmid).to eq '123456' end end
但是当我运行bundle exec rspec
我得到了
1) PMCArticle parses pmid Failure/Error: build(:pmc_article) NoMethodError: undefined method `build' for # # ./spec/pmc_article_spec.rb:8:in `block (2 levels) in ' # ./spec/pmc_article_spec.rb:12:in `block (2 levels) in '
我假设rspec未能要求spec/support/factory_girl.rb
,即使工厂女孩入门指南说我应该把文件放在那里。
我在启动项目时运行了命令行命令来初始化rspec,这是在我使用工厂女孩进行项目之前。
为什么RSpec不在spec / support中加载文件?
规范/支持没有什么神奇之处。 如果你使用rspec-rails然后它用来添加一行自动加载其中的所有东西,但从3.1.0开始它没有 – 看到这个提交 )。
我只能假设工厂女孩博士假设存在这个现已停用的function。 您可以通过添加为项目启用此function
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
对于您的规范帮助器,当然您可以将config.include
行移动到主spec_helper文件中。
在非rails世界中,将Rails.root
替换为项目根目录的任何位置。
虽然FactoryGirl指南建议在support / factory_girl.rb中配置RSpec,但仍需要手动要求该文件。 我建议在spec_helper中添加以下内容:
require 'factory_girl' # require the gem require_relative './support/factory_girl' # this should point to the factory_girl.rb file.