0

私はレールが初めてです。ファクトリーガールの新人。

私はこのようなモデルを持っています。

class Manifest < ActiveRecord::Base

  serialize :scopes, Array

  :app_description
  :app_name
  :app_id
  :app_verson
  :dev_id
  :callback
  :manifest_ver
  :signed_jwt
  :scopes

  validates :app_name, presence: true
  validates :callback, presence: true

こんな工場があります。

  factory(:manifest) do
    callback "some callback"
    app_name "cool birds"
  end

上記モデルに関するスペックはこんな感じ。

describe Manifest do
  describe "validation" do
    describe "of object from fractory" do
      it "must be ok" do
        FactoryGirl.build(:manifest).should be_valid
      end
    end
  end
end

だから、私はこのテストに合格するだろうと思っていました。しかし、この出力は失敗します。

  1) Manifest validation of object from fractory must be ok
     Failure/Error: FactoryGirl.build(:manifest).should be_valid
       expected #<Manifest id: nil, dev_id: nil, app_id: nil, app_description: nil, app_name: "cool birds", app_version: nil, manifest_ver: nil, callback: nil, signed_jwt: nil, scopes: [], created_at: nil, updated_at: nil> to be valid, but got errors: Callback can't be blank

コールバックを空白にすることはできません。FactoryGirl は属性「callback」の値を無視しているようです。

スペックが変わるFactoryGirl.build(:manifest, callback: "some callback").should be_validと動く!テストに合格します。

FactoryGirl は、モデル内の「コールバック」以外の属性に対して機能します。なんで?私またはこの「callback」という名前の属性が何をしたのでしょうか? 問題を見つけるにはどうすればよいですか。

4

0 に答える 0