2

申し訳ありませんが、タイトルの言い方がわかりませんが、テストの概要は次のとおりです。

describe Model do
  let(:model) { FactoryGirl.create(:model) }
  subject { model }

  it { should be_valid }

  model.array_attribute.each do |attribute|
    context "description" do
      specify { attribute.should == 1 }
    end
  end
end

問題は、その行model.array_attribute.each do |attribute|で、未定義のローカル変数またはメソッドのエラーが発生することmodelです。let(:model)検証が(とりわけ)正常に機能するため、が機能していることを私は知っています。この問題は、実際のテスト(つまりspecifyitなど)の外部で呼び出されていることが原因であると思われます。

これを機能させる方法について何かアイデアはありますか?

4

2 に答える 2

1

modelスペックブロックコンテキスト内でのみ評価されるため、ここでは不明です。

次のようなことをします:

describe Model do
  def model
    FactoryGirl.create(:model)
  end

  subject { model }

  it { should be_valid }

  model.array_attribute.each do |attribute|
    context "description" do
      specify { attribute.should == 1 }
    end
  end
end

ところで、ここに素晴らしい読み物があります

于 2012-05-15T22:02:20.940 に答える
1

私は次のコードでこれを解決しました:

describe Model do
  let(:model) { FactoryGirl.create(:model) }
  subject { model }

  it { should be_valid }

  it "description" do
    model.array_attribute.each do |attribute|
      attribute.should == 1
    end
  end
end
于 2012-05-15T22:04:53.743 に答える