Организация ожиданий в rspec - PullRequest
       1

Организация ожиданий в rspec

0 голосов
/ 15 сентября 2010

Я основываю свой вопрос на этом: rspec mocks: проверить ожидания в методах «следует»? , а также на следующих принципах: http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/

Итак, если в каждом блоке "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

Надеюсь, проблема ясна. У кого-нибудь есть опыт организации спецификаций по этому делу? Я делаю какую-то ошибку?

1 Ответ

4 голосов
/ 16 сентября 2010

Одно ожидание на группу - это предложение, а не жесткое и быстрое правило.Вы не должны сходить с ума, пытаясь соответствовать этому (и в этом случае, я думаю, использование блока after :all немного сходит с ума).

Я также избавляюсь от before :all ипросто использование before :each -: все может иногда приводить к запутанным ошибкам состояния.

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

И на самом деле, вы все еще устанавливаете только одно ожидание на группу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...