ruby-on-rails-3
  • rspec2
  • factory-bot
  • 2011-09-10 4 views 1 likes 
    1

    factory_girl에 문제가 있습니다. 다음은 rspec의 오류입니다.Factory_girl의 오류 : NoMethodError : 정의되지 않은 메소드 - rspec 및 rails 3.1.0

    "장애/오류 : 고객 = 공장 (: 고객 : 이름 => 전무) NoMethodError : 정의되지 않은 메서드`category1_id = '#Customer에 대한 : 0x4175418은"

    여기

    가 RSpec에 코드입니다
    describe "data integrity" do 
        it "should return error with no name" do 
        customer = Factory(:customer, :name => nil) 
        customer.errors[:name].should_not be_empty 
        customer.should_not be_valid 
        end 
        it "should take a good name" do 
        customer = Factory(:customer, :name => "good customer name") 
        customer.errors[:name].should be_empty 
        end 
    end 
    

    category1_id는 고객 테이블의 열입니다. (: 고객)

    Factory.define :customer do |c| 
        c.name "test customer" 
        c.email "[email protected]" 
        c.phone "12345678" 
        c.cell "1234567890" 
        c.active 1 
        c.category1_id 2 
        c.short_name "test" 
    end 
    

    어떤 생각 여기에 공장에 대한 customer.rb

    class Customer < ActiveRecord::Base 
        validates :name, :presence => true 
    end 
    

    정의는? 감사.

    +0

    'category'_id' 컬럼이'customer' 테이블에 존재하는지 확인하십시오. – NARKOZ

    답변

    0

    factory_girl_rails (by factory_girl)에 대한 종속성이 삭제되고 Factory()가 Factory.build()로 대체 된 후에 문제가 사라졌습니다.

    어떻게 든 factory_girl은 내 시스템의 factory_girl_rails에 대한 의존성을 개발했습니다 (여전히 이유를 모르겠습니다). factory_girl이 설치되어 있으면 gem 검사를 위해 factory_girl_rails를 설치해야합니다. 그러나 factory_girl과 factory_girl_rails가 모두 설치되면 중복 오류로 인해 충돌이 발생합니다. 몇 시간 동안 시도가 실패한 후 시스템을 재부팅하고 다시로드 한 후 충돌 종속성이 이상하게 사라졌습니다.

    +0

    동일한 문제가 있으며, 또한 '_id'라는 접미사가 붙은 속성이 있습니다. 최후의 수단으로, 나는 당신이 말한 것처럼 재부팅을 시도했지만 많은 도움이되지 못했습니다. 재미있는 점은 레일즈 콘솔에는 공장을 잘 만들지 만 스펙에서는 그렇지 않다는 것입니다. –

    관련 문제