2015-04-04 37 views
1

在文件規範/支持/ factory_girl.rb我RSpec的軌道沒有不加載在規格/支持文件

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 #<RSpec::ExampleGroups::PMCArticle:0x007feac3cc5078> 
    # ./spec/pmc_article_spec.rb:8:in `block (2 levels) in <top (required)>' 
    # ./spec/pmc_article_spec.rb:12:in `block (2 levels) in <top (required)>' 

我認爲rspec的失敗,要求spec/support/factory_girl.rb,即使factory girl getting started guide說我應該把文件放在那裏。

我在啓動項目時運行命令行命令來初始化rspec,這是在我爲項目使用工廠女孩之前。

爲什麼RSpec不在spec/support中加載文件?

回答

3

規範/支持沒有任何魔力。如果您使用rspec-rails,那麼它會自動添加一行來加載所有內容,但從3.1.0開始它不會 - 請參閱commit)。

我只能假設工廠女孩的文檔假設存在這個現在停用的功能。您可以通過添加

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } 

要將規範幫手開啓這項功能爲您的項目或課程,你可以說config.include線移動到主spec_helper文件。

在非導軌世界中,將Rails.root替換爲項目根目錄的任何位置。

+0

這將需要Rails加載,對吧? – 2015-07-27 01:02:48

+0

我不明白。如果問題中提到「RSpec without Rails」,沒有使用Rails標記,但答案使用了'Rails.root',('·_·')... – 2017-12-08 16:13:02

1

儘管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. 
+0

我現在遇到同樣的問題,@Frederick Cheung的解決方案沒有工作。也許我不知道我應該在哪裏插入這行:'Dir [Rails.root.join(「spec/support/**/*。rb」)]。each {| f |需要f}'。所以我嘗試了@Guacamolay的想法。它也很簡單,很好地工作。 – cul8er 2016-01-20 03:02:56

相關問題