0

rspec3 レベルの深さのネストされたモデルを使用して、モデル スペック テストを作成しています。それぞれが関係->を表していhas_manyます。

Users->Goals->Milestones

現在、私のspec/models/milestone_spec.rbテストはbe_validチェックに失敗しており、なぜこれが起こっているのか少し困惑しています。

Failures:

  1) Milestone 
     Failure/Error: it { should be_valid }
       expected valid? to return true, got false
     # ./spec/models/milestone_spec.rb:17:in `block (2 levels) in <top (required)>'

仕様自体:

describe Milestone do
  let(:user) { FactoryGirl.create(:user) }
  let(:goal) { user.goals.build(content: "Loreum Ipsum", amount: "30", interval: 2) }
  before do
    @milestone = goal.milestones.build(amount: "20") 
  end

  subject { @milestone }

  it { should respond_to(:goal_id) }
  it { should respond_to(:amount) }
  # not sure why this isn't working
  it { should be_valid }

の作成方法に問題があるの@milestoneでしょうか。試してみましgoal.milestones.newたが、違いはないようです。以下の仕様では、フィールドを適切に検証するためのいくつかのテストがあり、それらは正常に実行されます。

何か案は?

4

1 に答える 1

1

これを試して:

it "should be valid" do
  @milestone.valid?
  puts @milestone.errors.full_messages
end

これにより、検証が実行され、検証エラーが出力されるため、何が起こっているかを確認できます。

于 2013-04-17T03:32:28.557 に答える