0
を実行している間、私はRailsの3.2アプリのためにいくつかのRSpecのテストを書いている、とRSpecのは、このテストでクラッシュし:Railsの3.2 - RSpecの - 未定義のメソッドエラーRSpecのテストに
describe Person do
before { @person = Person.new(names: [Factory.create(:name)], DOB: Date.today) }
subject { @person }
[:names,:DOB,:phone,:email,:address1,:address2,
:city,:state,:zip,:notes,:last_seen].each do |value|
it { should respond_to(value) }
end
it { should be_valid }
describe "when no name is present" do
@person.names = []
it {should be_invalid}
end
describe "when no DOB is present" do
@person.DOB = nil
it {should be_invalid}
end
end
私はRSpecのを実行すると、私が手ノー名前テストを削除した場合、それは@person.DOB = nil
にcrashs @person.names = []
それは@person
が前に設定されていない、何とか次のようになります。この行のブロック。 RSpecのいくつかの変わった点がありますか?
編集:人モデル:
class Person < ActiveRecord::Base
has_and_belongs_to_many :names
validates_presence_of :DOB
end
非常にシンプル。名前と人を接続するためのnames_people
結合テーブルがあります。私が言ったように、私は通常names=()
によって名前にアクセスできます。これはこの1つのテストに関するものです。
は '(' Person.newことPerson.new'べきではない:名=> [Factory.create(この代わりに
:たとえば、私はこれを使用していました:name)]、:DOB => Date.today) '? – ScottJShea
'rake db:test:prepare'を実行したことを確認してください。これは、マイグレーション後にアクティブレコードがテストDB上のカラムを見つけることができないことがあります。 –
こんにちは、私たちにPersonモデルに関する詳細を教えてください。 names属性のアクセサーがないので、メソッド名=()は存在しないようです。 –