2013-04-17 2 views
0

저는 테스트가 처음이므로 공장 소녀 테스트를 통해 처음 몇 개의 Rspec을 시험하고 있습니다. 나는 공장 여자를 사용하기 전까지 모든 것이 잘되고있다.레일 3 Factory_Girl 공장이 등록되지 않았습니다

사양/spec_helper.rb에게 다음과 같이

내 설정이다

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'database_cleaner' 
require 'factory_girl_rails' 

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

RSpec.configure do |config| 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
    config.infer_base_class_for_anonymous_controllers = false 
    config.order = "random" 

    config.include FactoryGirl::Syntax::Methods 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

end 

사양/모델/role_spec.rb

require 'spec_helper' 

describe Role do 
    it "is valid" do 
    role = FactoryGirl.build(:role) 
    expect(role).to be_valid 
    end 
end 

사양/factories.rb

FactoryGirl.define do 
    factory :role do 
    rolesymbol "tst-admin" 
    name "test admin" 
    end 
end 

그러나 번들 exec rs를 실행할 때 PEC 또는 레이크 사양 나는 FactoryGirl 역할이 올바르게 정의하고, 규격이 정상적으로 작동 작동하는 것 같군 나에게 다음과 같은 오류

Failures: 

    1) Role is valid 
    Failure/Error: role = FactoryGirl.build(:role) 
    ArgumentError: 
     Factory not registered: role 
    # ./spec/models/role_spec.rb:12:in `block (2 levels) in <top (required)>' 

을 얻을, 그래서 무슨 일이 일어나고 있는지에 관해서 손실에 있어요. 어떤 아이디어?

마이클

+0

FactoryGirl.build (: role) 대신 build (: role)를 사용하면 어떻게됩니까? FactoryGirl – mguymon

+0

을 직접 호출하는 대신 FactoryGirl에 rspec 도우미를 사용합니다.하지만 같은 문제는 좋은 생각입니다. Factory Girl이 등록한 것을 찾을 수있는 방법이 있습니까? 나는 공장이 등록되어 있지 않다는 불쾌한 느낌을 가지고있다. –

+0

단일 파일을 공장 용으로 사용했을 때의 버그 일 수 있습니다. factories.rb를 spec/factories/roles.rb로 옮겨보십시오 (파일 이름의 복수를주의하십시오. 매번 저를 얻습니다). – mguymon

답변

0

시도해주세요. 'factory_girl'을 (를) factory.rb에 추가 하시겠습니까?

+0

그래, 나도 똑같은 결과를 얻었습니다. 또한 'factory_girl_rails'을 요구했습니다. –

+0

OK, 약간의 경찰관이 있지만 Fabrication로 옮겨서 잘 작동합니다. 공장 소녀와 무슨 일이 벌어지고 있는지 계속 볼 것입니다 –

1

저는이 파티에 좀 늦었지만 Rails 엔진에서 FactoryGirl을 RSpec과 함께 사용하려고 할 때도 똑같은 문제가있었습니다. 이를

root/ 
    spec/ 
    spec_helper.rb 
    a_spec_file.rb 
    factories/ 
     my_factory.rb 

을 FactoryGirl의 문서에 따르면 : 나는 당신이 예상대로

FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)] 
FactoryGirl.find_definitions 

디렉토리 구조가 명시 적으로 공장 소녀를 설정하여 문제가 내 사양/spec_helper.rb 파일의 경로를있는 정의 해결 구조는 상자 밖으로 작동해야합니다 (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#defining-factories). 나는 이것이 왜 나에게 해당하지 않는지 조사하지 않았다. (첫 번째 응답도 마찬가지이므로 여기에 문제가 있으면 사과하십시오.)

-1

나는 심지어 파티에 왔지만 factories 디렉토리를 spec/support/factories의 더 표준적인 경로로 옮겨서이 문제를 해결했습니다. - rspec 이제 어디를보아야하는지에 대한 더 이상의 필요성없이 그것을 집어 든다.

+0

그것은 나를 위해 작동하지 않았다. 나는 아직도 rspec에 공장 defenition을 발견하지 못하는 문제가있다. –

+0

그것은 당신을 위해 일하지 않았을 수도 있지만, 그것은 나를 위해 작동했고, 따라서 유효한 답변, 일부에게 도움이됩니다. 다운 보턴은 "이 대답은 유용하지 않습니다."라는 말이 있습니다 ... 그것은 누구나 대답으로 도움을받을 수있는 것은 아니지만 그래도 도움이되는 사람에게는 유용합니다. 즉 이것은 사람들이 하향 투표해야하는 종류의 대답이 아니므로 "너는 멍청하다"또는 그와 동등한 대답을하는 사람들에 대한 평판을 유지하기를 원할 수 있습니다. –

관련 문제