문제

나는 Ruby on Rails에서 Test :: Unit과 Dooksa와 함께 공장 소녀를 설치하려고합니다. GEM을 설치하고 Test/Factories 디렉토리 아래에서 공장 파일을 만들고 Test/Models 디렉토리 아래에서 사양 파일을 만들었습니다. 내가 얻는 현재 오류는 'ArgumenterRor : No Pactory : Test'입니다. 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

방금 발견 된 factory_girl_rails는 자동 로딩이 유일하게 추가 된 것입니다. https://github.com/thuitchord/factory_girl_rails

나는 같은 문제가 있었다. 결국 나는 모든 공장을 "/test/factories.rb"에 넣고 "/test/test_helper.rb"파일에 다음 줄을 작성하여 수행했습니다.

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

Test_Helper에서 여러 파일을 요구하여 여러 파일에 대해 동일한 작업을 수행 할 수 있습니다. "Factory_girl의"readme에 언급 된 자동 인식이 왜 발생하지 않는지 아직 알지 못했습니다.

또한이 라인을 환경에 넣어이 문제를 제거했습니다.

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

또한 최신 보석을 가지고 있는지 확인하십시오.

이름이 "ThoughtBot-factory_girl"에서 "factory_girl"으로 변경되었고 소스가 변경되었습니다. "http://gems.github.com" 에게 "http://gemcutter.org".

Ruby 1.9.2와 함께이 문제가있는 경우 필요하다 확장 된 경로를 기대합니다.

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

이것 반점 내 문제를 해결했습니다. 방금 풀 요청을 보냈습니다. 그 후에 당신은 이것을 당신에게 추가 할 수 있습니다 test_helper.rb:

require 'factory_girl'
FactoryGirl.find_definitions

test_helper.rb에서 'factory_girl'만 필요하면 언급 한 것과 동일한 동작을 얻을 수 있지만 Config/Test/Environment.rb에서 필요한 경우 (참고 나는 사용합니다. 환경 주의자) 문제없이 공장 정의를 올바르게 찾을 수 있습니다.

나는 당신의 환경에 config.gem을 넣는 공장 소녀 RDOC를 읽은 후 이것을 시도했습니다.

또한 FactoryGirl을 1.3.2로 업데이트 한 후 테스트/공장의 공장이 더 이상 자동으로로드되지 않았습니다.

DG에서 Test_Helper.rb에 코드를 추가하여 문제를 제거 할 수 있습니다.

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

TextMate에서 단일 테스트를 실행할 때는 모든 것이 잘 작동했지만 Rake Test를 사용하여 명령 줄에서 모든 단위 테스트를 실행합니다. 단위는 복제 된 정화기로 실패했습니다 (아마도 Ruby 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/test_helper.rb ?

공장 자동 부하 메커니즘은 요구 사항이 호출되는 위치에 따라 다를 수 있습니다. *테스트/모델/공장/** 대신 공장*테스트/모델/공장/**를 찾으려고 할 수 있습니다.

공장 파일의 이름을 지정하는 대신 test_fackory.rb를 사용하여 in factory.rb 이름을 사용해보십시오.

흥미로운. 오이가 팩토리 _girl과 함께 일하도록하는 비슷한 문제가있었습니다. 원래 팩토리 _girl ( 'config.gem')을 찾도록 구성했지만 오이 환경에서로드되지 않았으며 오이와 같은 '기능/지원/env.rb'에 완전히 필요하지 않았습니다. Kenny가 위에서 제안한대로 정의를 찾기 위해 Factory_girl에게 명시 적으로 말했을 때 작업하십시오.

오이 환경에서 Env.rb와 완전히 필요한 invertory_girl에서 요구 사항을 제거했을 때, 그 효과는 사라지고 factory_girl은 상자에서 벗어났습니다.

따라서 실제로 (컨텍스트) 팩토리 _girl이로드 될 때의 문제 인 것 같습니다.

다른 사람들이 다른 버전의 레일을 사용하고 있기 때문에 (현재 2.x 및 3.x는 가장 일반적이기 때문에) 환경의 다른 관련 부분을 포함시키는 것이 중요합니다 (가장 중요한 것은 어떤 버전의 레일 버전)를 포함시키는 것이 중요합니다. . 로부터 factory_girl 웹 페이지, 버전 1.3.0 문서 (http://rubydoc.info/gems/factory_girl/1.3.0/frames) :

Rails 3과 함께 Factory_girl을 사용하려면 inctory_girl_rails 보석을 사용하십시오.

Rails 3 이전에 Rails 버전과 함께 Factory_girl을 사용하려면 버전 1.2.4를 사용하십시오.

로딩에 문제가있는 경우 올바른 버전을 사용하는 것이 좋습니다. 1.2.4보다 큰 Factory_girl의 버전은 'factory_girl_rails'(Rails 3.0+)의 종속성으로 가져옵니다.

나는 추가했다require 'factory_girl' require File.dirname(파일) + "/factories" Spec_helper.rb에게 도움이되었지만 Spork가 때때로 약간의 문제가 될 수 있다는 것을 기억합니다. 그래서 나는 Spork를 require 그리고 잘 작동했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top