factory_girl 설정이 어려워 일부 테스트가 실패했습니다. 나는 직업 JOB과 수업 TEMPLATE을 가지고있다. PROVIDER 사용자 클래스도 있습니다. 작업은 JOB과 TEMPLATE 모두에 속합니다. 그러나 현재의 공장에서는 공급자와 템플리트를 따로 지정합니다.factory_girl 새 인스턴스가 연결된 클래스의 부모 ID를 상속합니다
THIS ONE 나누기 :
이expect { post :create, job: attributes_for(:job, provider_id: provider.id) }.to change(Job,:count).by(1)
이 하나 (수동 정의) 작동합니다
expect { post :create, job: attributes_for(:job, provider_id: provider.id, template_id: create(:template, provider_id: provider.id)) }.to change(Job,:count).by(1)
자동에 속하는 것으로 만들 수 템플릿을 가지고 공장을 설정하는 방법은 없나요 공급자?
factory :job do
provider
template
end
factory :template do
template_type { Faker::Lorem.word }
template_text { Faker::Lorem.paragraph(3) }
end
설명서를 읽었을 때 내가 가지고있는 것의 종류가 여기에 포함됩니다. 무엇이든간에, 그것은 여전히 테스트를 위반하고 있습니다 ... 공장과 관련이 있는지 확실하지 않습니까? – Marc
RSpec도 디버깅 할 수 있습니다. 컨트롤러에서 디버거를 시작하고 동작을 확인합니다. 생성 된 작업이 유효합니까? job.valid? 그 일을 해. 그렇지 않다면 거기에 어떤 오류가 있는지 확인하십시오. job.errors가 작업을 수행합니다. 종종 테스트가 실패하는 이유를 찾는 가장 쉬운 방법은 ... – Danny
감사합니다 ... 컨트롤러의 작성 방법에서 "@job = Job.new (job_params)"; job_params가 provider_id에서는 보내지 만 template_id는 보내지 않으므로 template_id가 필요하므로 실패합니다. 공장은 전에 있어야합니까 (: 생성)? – Marc