При написании тестов RSpec я нахожу, что пишу много кода, который выглядит так, чтобы гарантировать, что метод был вызван во время выполнения теста (ради аргумента, позвольте сказать, что я не могу опросить состояние объекта после вызова, потому что операция, которую выполняет метод, не просто увидеть эффект).
describe "#foo"
it "should call 'bar' with appropriate arguments" do
called_bar = false
subject.stub(:bar).with("an argument I want") { called_bar = true }
subject.foo
expect(called_bar).to be_true
end
end
Я хочу знать: есть ли более синтаксис, чем этот? Неужели я пропустил какую-то фанкную RSpec-удивительность, которая снизила бы приведенный выше код до нескольких строк? should_receive
звучит так, будто он должен это делать, но, читая дальше, звучит так, как будто это не совсем то, что он делает.