Я пишу тест Rspec для существующего кода, в который я добавил некоторую логику, и хочу убедиться, что он работает правильно.Меня не волнуют возвращаемые значения, просто логика работает с объектом, который я передаю ему.Для простоты здесь приведен пример очень простой функции из класса, который я построил:
def function_I_want_to_test(thing)
if thing > 0
function_a(thing)
else
function_b(thing)
end
end
function_a
и function_b
уже имеют специальные тесты, поэтому мне все равно, какой результатзначения есть, но и function_a
, и function_b
делают вызовы API, что, на мой взгляд, усложнит тест rspec для проверки только логики, содержащейся в function_I_want_to_test
.
Я прошел через этостраница (https://blog.codeship.com/unit-testing-in-ruby/) обзор подхода модульного тестирования, и объяснения имеют смысл, но при попытке использовать allow
и receive
кажется, что функция все еще хочет быть вызванной, поэтому я предполагаю, что яЯ не использую функции правильно.
По сути, я хочу обработать свой код как таковой и заставить его возвращать что-то произвольное, чтобы он даже не вызывал функцию.
def function_I_want_to_test(thing)
if thing > 0
pp "a"
else
pp "b"
end
end
Отмое исследование, похоже, что путь / ожидание - это путь, но я предполагаю, что не до конца понимаю концепцию.
Я думаю, что главный вопрос, который у меня есть, - как проходит мой тест rspec?знаете, как «переопределить» функции (function_a
и function_b
) при тестировании function_I_want_to_test
?
Я знаю, что есть несколько похожих заданных вопросов, но они, похоже, не отвечают так, как я ожидал.