Это тонко, но есть два способа определения определения expect
.Во-первых, вы задаете значение или выражение :
expect(x).to be_something
Здесь выражение оценивается немедленно и только тогда expect
получите шанс сделать свое дело.
По сути ваш код выглядит так:
x = described_class.new.convert_to_pdf # Exception happens here
expect(x).to raise_error # Too late, already popped an exception
Во второй форме вы предоставляете блок :
expect { x }.to raise_error
Где здесь блок оценивается самим expect
и может захватывать и проверять любые сгенерированные ошибки.
При использовании raise_error
вы хотитеблочная форма или исключение проскользнет мимо спасательного механизма expect
.