无法在所有块之前创建rspec double

时间:2013-10-03 17:05:20

标签: ruby rspec

这很奇怪。以下代码:

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'block(2 levels)in'

before(:all)更改为before(:each),一切都很好。我正在使用Ruby 1.9.3

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

这是预期的行为,因为在每个示例之后都会清除双打。你应该坚持在before(:each)块中使用它们。

请参阅https://www.relishapp.com/rspec/rspec-mocks/docs/scope

另见https://github.com/rspec/rspec-core/issues/202有关此问题的讨论。