在rspec中组织期望

在rspec中组织期望,rspec,Rspec,我的问题是基于这一点的:同时也基于这些指导原则: 所以,如果每个“it”块只有一个期望值,那么如果我将模拟期望值和价值期望值混合在一起呢 例如: describe Foo, "#bar" do before :all do @baz = mock(Baz) @foo = Foo.new(@baz) end it "should call waka on @baz" do @baz.should_receive(:waka) end it "should

我的问题是基于这一点的:同时也基于这些指导原则:

所以,如果每个“it”块只有一个期望值,那么如果我将模拟期望值和价值期望值混合在一起呢

例如:

describe Foo, "#bar" do
  before :all do
    @baz = mock(Baz)
    @foo = Foo.new(@baz)
  end
  it "should call waka on @baz" do
    @baz.should_receive(:waka)
  end
  it "should not be empty afterwards" do
    @foo.should_not be_empty
  end
  it "should not raise exceptions" do
    lambda {@foo.bar}.should_not raise_exception # potentially with side effects?
  end
  after :all do
    @foo.bar # won't work with the second expectation
  end
end

我希望问题是清楚的。有没有人有组织本案例规范的经验?我犯了什么错误吗?

每个小组的一个期望是一个建议,而不是一个硬性规定。您不应该为了遵从它而发疯(在这种情况下,我认为使用
after:all
块有点发疯)

我还摆脱了
before:all
,仅仅使用
before:each
-:all有时会导致混乱的状态错误

describe Foo, "#bar" do
  before do
    @baz = mock(Baz)
    @foo = Foo.new(@baz)
  end

  it "should call waka on @baz" do
    @baz.should_receive(:waka)
    @foo.bar
  end

  it "should not be empty afterwards" do
    @foo.bar
    @foo.should_not be_empty
  end

  it "should not raise exceptions" do
    lambda { @foo.bar }.should_not raise_exception
  end
end

事实上,你仍然只为每个小组设定一个期望值。

每个小组设定一个期望值是一个建议,而不是一个硬性规定。您不应该为了遵从它而发疯(在这种情况下,我认为使用
after:all
块有点发疯)

我还摆脱了
before:all
,仅仅使用
before:each
-:all有时会导致混乱的状态错误

describe Foo, "#bar" do
  before do
    @baz = mock(Baz)
    @foo = Foo.new(@baz)
  end

  it "should call waka on @baz" do
    @baz.should_receive(:waka)
    @foo.bar
  end

  it "should not be empty afterwards" do
    @foo.bar
    @foo.should_not be_empty
  end

  it "should not raise exceptions" do
    lambda { @foo.bar }.should_not raise_exception
  end
end
事实上,你仍然只为每个小组设定了一个期望值