Код, который вы здесь показали, выглядит странно, и у меня такое ощущение, что нам не хватает контекста, но в целом вы можете заглушить метод, вызывающий ошибку, например:
expect(output).to receive(:split).with("\n").and_raise(RuntimeError.new("some error"))
но это это своего рода уродливый способ go о вещах. Если ошибка возникает условно в зависимости от типа output
, то лучше найти способ установить для этой переменной значение, вызывающее ошибку. Как это сделать, я не могу сказать вам, не увидев тест вашего кода.
Например, скажем, вы обернули весь этот код в def add_fact(output)
- тогда из ваших тестов вы можете намеренно передать ошибку -приводящее значение для output
, и вам больше не нужно разделять заглушки (что довольно странно). Этот шаблон известен как «внедрение зависимостей».