Тестът на Rspec модел на FactoryGirl е неуспешен

Имам приложение за проследяване на клиенти, работни места и часове (и други). Използвам rails 3.2.2 и rspec_rails 2.13.0. Следя pdf книгата everydayrailsrspec от Арън Съмнър.

Моите взаимоотношения са, клиентите могат да имат много работни места, работните места могат да имат много часове.

Тествам моите модели. Тестовете за клиенти и работни места преминават добре. Това са моите часове тестове, не мога да стигна до работа и току-що започнах да го правя. Не мога да накарам теста за тестване да премина. Въздишка.

Фабрика за часове:

# spec/factories/hours.rb

FactoryGirl.define do
  factory :hour do
    job = FactoryGirl.create(:job)
    job_id job.id
    first_name "John"
    last_name  "Smith"
    hours 8
    date_worked "2013-04-27"
    description "Did some work"
  end
end

Hours се нуждае от job_id, така че създавам работа, използвайки фабриката за задания, за да получа job_id от нея. Правя същото нещо в моята фабрика за работа, за да получа customer_id и работи добре. Това е редът, на който "вярвам", че грешката се спира. Изглежда ми казва, че не вижда фабриката ми за работа.

Извеждане на грешка (частично) - вижте първия и последния ред:

/Users/johndcowan/.rvm/gems/ruby-1.9.2-p318/gems/factory_girl-4.2.0/lib/factory_girl/registry.rb:24:in `find': Factory not registered: job (ArgumentError)
from /Users/johndcowan/.rvm/gems/ruby-1.9.2-p318/gems/factory_girl-4.2.0/lib/factory_girl/decorator.rb:10:in `method_missing'
from /Users/johndcowan/.rvm/gems/ruby-1.9.2-p318/gems/factory_girl-4.2.0/lib/factory_girl.rb:71:in `factory_by_name'
from /Users/johndcowan/.rvm/gems/ruby-1.9.2-p318/gems/factory_girl-4.2.0/lib/factory_girl/factory_runner.rb:12:in `run'
from /Users/johndcowan/.rvm/gems/ruby-1.9.2-p318/gems/factory_girl-4.2.0/lib/factory_girl/strategy_syntax_method_registrar.rb:19:in `block in define_singular_strategy_method'
from /Users/johndcowan/MyWebSites/drywall/spec/factories/hours.rb:5:in `block (2 levels) in <top (required)>'
...

Първият ред в изхода има: Фабриката не е регистрирана: работа (ArgumentError) Това означава ли, че не вижда моята фабрика за задания?

Ред 5 във фабриката е: job = FactoryGirl.create(:job)

Фабрика за работни места, в случай че помогне:

# spec/factories/jobs.rb

FactoryGirl.define do
  factory :job do
    # need a customer for the customer_id field
    customer = FactoryGirl.create(:customer)
    customer_id customer.id
    sequence(:name) { |n| "Job#{n}" }
    sequence(:address) { |x| "#{x} Main Str" }
    city "Cortland"
    state "NY"
    zip "13045"
    sequence(:phone) { |y| "607-75#{y}-1234" }
    description "Drywall Work"
  end
end

Моят тест за спецификации

# spec/models/hour_spec.rb
require 'spec_helper'

describe Hour do
  it "has a valid factory" do
    FactoryGirl.create(:hour).should be_valid
  end
end

Благодаря за всяко мнение. --jc


person John Cowan    schedule 30.05.2013    source източник


Отговори (1)


Дефиницията на асоциацията е неправилна. Опитайте се да използвате документирания начин

factory :hour do
  job #this is enough
  first_name "John"
  last_name  "Smith"
  hours 8
  date_worked "2013-04-27"
  description "Did some work"
end
person Billy Chan    schedule 30.05.2013
comment
Били Чан, ти си Д'ман. Благодаря ти! Винаги научавам нещо в този форум. - person John Cowan; 30.05.2013