1

#worksマークされた行が機能するのに、マークされた行#causes errorがエラーを引き起こす理由を誰かが理解するのを手伝ってくれますか? (これは rspec-rails 2.11.0 を使用した Rails 3.2.6 です)

エラー:undefined method 'more_things=' for #<Proc:0x007fbd23d0b960> (NoMethodError)

仕様:

describe User do

  subject { User.new }

  it "has no something" do
    User.new.more_things = "#works"        #works
    subject.something.should be_empty      #works
  end

  describe "#more_things" do
    User.new.more_things = "#works"        #works
    subject.more_things = "#causes error"  #causes error
  end

end

モデル:

class User

  def something
    []
  end

  def more_things=(value)

  end

end

ある種のスコープの問題である可能性があると考えて別のsubject { User.new }ものを内部に入れてみましたが、それは役に立ちませんでした(何かを返すため、スコープの問題ではありません- a .describe "#more_things" dosubject Proc

4

1 に答える 1

0

ドー。私を遅くします。itブロック内 (またはbefore/afterブロック内)にある場合に機能します。

describe "#more_things" do
  User.new.more_things = "#works"        #works
  subject.more_things = "#causes error"  #causes error
  it "should work now" do
    subject.more_things = "#works now"   #works
  end
end

私はいつもそれが主題であることを覚えておくべきだと思います:)

于 2012-07-13T04:00:49.660 に答える