如何使<klass> .any_instance成为主题</klass>

时间:2012-11-25 21:23:00

标签: ruby rspec2

现在我有很多以下内容:

it{ ::Api.any_instance.should_receive(...).once; start }

如果我试图让::Api.any_instance成为主题,那么Rspec就会窒息,即

subject{ ::Api.any_instance }
it{ should_receive(...).once; start }

有没有办法干这些规格?

1 个答案:

答案 0 :(得分:0)

我认为问题在于规格的设计。

我建议做的是:

describe SomeClass do
  let(:object_instance) { described_class.new } 

  before do
    # Put expectations in before block, they shouldn't be a part of text example!
    object_instance.should_receive(:something)
  end

  specify { subject.do_something_else }
end

如果您有更多的期望,可以将所有这些内容放入before块或仅使用不同的context

如果很多规格看起来相似,我会选择将其提取到共享示例中。