0

顧客、仕事、時間などを追跡するアプリがあります。Rails 3.2.2 と rspec_rails 2.13.0 を使用しています。私は、Aaron Sumner による 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 が必要なので、jobs factory を使用してジョブを作成し、そこから 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)>'
...

出力の最初の行には次のようなものがあります: Factory not registered: job (ArgumentError) これは、私のジョブ ファクトリが表示されていないことを意味しますか?

Factory の 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

4

1 に答える 1