1

これは非常に奇妙です。次のコード:

describe "Spike" do
  before(:all) do
    something = double('name')
  end
  describe "a test" do
    it "is basic" do
      1.should == 1
    end
  end
end

次の場合に失敗します。

NoMethodError: undefined method `double' for #<RSpec::Core::ExampleGroup::Nested_1:0x9dec5e8 @__memoized=nil>

./spec/unit/whatever/spike_spec.rb:3:in `ブロック (2 レベル) in '

を変更するbefore(:all)before(:each)、すべて問題ありません。Ruby 1.9.3を使用しています

何か案は?

4

1 に答える 1

4

double はすべての例の後に消去されるため、これは予想される動作です。before(:each)これらをブロックで使用することに固執する必要があります。

https://www.relishapp.com/rspec/rspec-mocks/docs/scopeを参照してください

これに関する議論については、 https://github.com/rspec/rspec-core/issues/202も参照してください。

于 2013-10-03T17:08:46.780 に答える