При написании тестов 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
звучит так, как будто он должен это делать, но при дальнейшем чтении кажется, что это не совсем то, что он делает.
should_receive
, поэтому я подумал, что этот вопрос поможет.