Я хотел бы проверить, что метод называется рекурсивно с определенным аргументом.Rspec: Как проверить рекурсию?
Мой подход:
class Recursable
def rec(arg)
rec(7) unless arg == 7
end
end
describe Recursable do
it "should recurse" do
r = Recursable.new('test')
r.should_receive(:rec).with(0).ordered
r.should_receive(:rec).with(7).ordered
r.rec(0)
end
end
Неожиданно RSpec терпит неудачу с:
expected :rec with (7) once, but received it 0 times
Любая идея, что случилось с моим подходом? Как проверить эффективную рекурсию с конкретным аргументом?
А, ладно. Ну что ж! Я пытаюсь найти ошибку - метод возвращает неправильное значение (это сложнее, чем показано здесь). Я думал, что смогу проверить каждую его часть, чтобы сузить пространство проблем. Это усложняется с каждым уровнем рекурсии, и было бы неплохо проверить, правильно ли выполняется рекурсия. – crispy
Другими словами: Не тестируйте реализацию, проверяйте эффект, который имеет код. Отличный ответ! – awendt