Имам приложение за проследяване на клиенти, работни места и часове (и други). Използвам 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