質問

監督-選手コメント工場の少女試験::ユニットと警Ruby on Railsベースで、.ルを設置しておりますの逸品は、工場内のファイルの試験/工場のディレクトリに作成し、私のspecファイルの試験-モデルのディレクトリです。現在のエラーはいろんの"ArgumentError:な工場:試験は、きっと考えるのtest_factory.rbのファイルはロード?あらゆるアイデアとしてどう変わるのか?

ここで私のファイルです。

#test/factories/test_factory.rb
Factory.define :test do |t|  
  t.name 'test_spotlight'  
  t.label 'test spotlight label'  
end

#test/modes/test_spec.rb
require 'test_helper'
require 'factory_girl'
class TestTest < Test::Unit::TestCase
  def setup
    @test = Factory.build(:test)
  end

  context "A test" do
    should "save with the minimum requirements" do
      assert @test.save
    end
  end 
end 
役に立ちましたか?

解決

私はあまりにも私のプロジェクトの一つに、この問題に遭遇しました。私は、初期化コードがスキップされるように引き起こして、正確にはよく分からないが、あなたは、このような工場の定義をロード強制することができます:

require 'factory_girl'
Factory.find_definitions

この情報がお役に立てば幸いです。

他のヒント

test_helper.rbでこれを入れてみてください。

require 'factory_girl'
Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory|
  require factory
end

私は同じ問題を抱えていました。結局、私は「/test/factories.rb」にすべての私の工場を置いて、私の「/test/test_helper.rb」ファイルに以下の行を書き込むことによって行いMADEます:

require 'factory_girl'
require File.dirname(__FILE__) + "/factories"

あなたはtest_helperでそれらを要求することによって、複数のファイルに対して同じことを行うことができます。それは「factory_girlの」README起こらないで言及だ自動-含まなぜ私はまだ考え出したていない。

私も自分のenvironment.rbににこのラインを置くことによって、この問題を取り除くために管理しました

config.gem "factory_girl", :source => "http://gemcutter.org"

あなたは、最新の宝石を持っていることを確認も行います。

"thoughtbot-factory_girl" と "factory_girl" から変更したソースから変更名「ます。http://gems.github。 COM の " http://gemcutter.org の」へ" ます。

の場合、あなたはルビー1.9.2でこの問題、の の必要が展開パスを期待していた。

File.expand_path("test/factories.rb")

このパッチについて私の問題。私は、プルリクエストを送りました。 その後、あなたのtest_helper.rbにこれを追加することができます:

require 'factory_girl'
FactoryGirl.find_definitions

私はまた、問題に遭遇した - 1.3.2にFactoryGirlを更新した後 - 。テストの工場は/工場が自動的にロードされなかったこと、それ以上

私はtest_helper.rbにDGからのコードを追加することで、問題を取り除くことができます:

Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
 require factory
end

TextMateで、単一のテストを実行すると、すべてがうまく働いたが、例えばランニングすくいテストを使用してコマンドラインからすべてのユニットテスト:単位はDuplicateDefinitionErrorで失敗しましたが(私はそれはおそらく、ルビーは1.8.xとは何かを持っていることを読んで)。だから私は少しのコードを変更します:

if (!Factory.factories || Factory.factories.empty?)
  Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
    require factory
  end
end

あなたが移動しようとしている。

require 'factory_girl'

あなたののテストへ/ test_helper.rb

工場自動ローディング機構は、ザが呼び出される必要がどこに依存してもよいです。それは工場を見つけようとすることができ*テスト/モデル/工場/ **ではなく*テスト/工場/ **

の代わりに、あなたの工場ファイルtest_factory.rb名前を付ける、命名してみてくださいそれfactory.rb

興味深いです。私はfactory_girlで動作するようにキュウリを取得しようとしている同様の問題がありました。私はもともとキュウリと同じだけに始まっなどwebrat、の場合と、「機能/サポート/ env.rb」にキュウリ環境にロードされ、完全に必要な(「config.gem」)探さなければfactory_girlを設定したがいませんでした私は明示的にケニーは、上記の提案として、その定義を見つけるために、factory_girlを言ったときに動作します。

私はenv.rbとキュウリの環境で完全に必要なfactory_girlから必要と声明を削除すると、

、効果が離れて行き、factory_girlは、箱から出して働いています。

だから本当に(またはその文脈で)factory_girlがロードされるときの問題のようです。

によって異なりますの使用年数の異なるバージョンレール(2.x、3.xの共通)ことが重要で、その他の関連作品の環境で最も重要なれるオープンアクセスのレールだ。から factory_girlウェブページ、バージョン1.3.0書 (http://rubydoc.info/gems/factory_girl/1.3.0/frames):

を利用する場合はfactory_girlとレールの3-利用に factory_girl_rails gemいます。

を利用する場合はfactory_girlとレールのバージョン以前のレールを3, 利用version1.2.4.

ばったりの荷重で、私の提案として使われているバージョン。のバージョンのfactory_girlよ1.2.4ったものと考えたら、依存関係のfactory_girl_rails'(レール3.0+)の逸品です。●

私が追加しました require 'factory_girl' require File.dirname(FILE) + "/factories" は助けwhiche spec_helper.rbするが、その後、私は先割れスプーンは時々BA問題のビットが、私はrequireせずに先割れスプーンを再起動することができ思い出し、その後、それがうまく働いています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top