私はレールが初めてです。ファクトリーガールの新人。
私はこのようなモデルを持っています。
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」という名前の属性が何をしたのでしょうか? 問題を見つけるにはどうすればよいですか。