InSpe c построен поверх RSpe c, который является популярной библиотекой тестирования в Ruby. К счастью, RSpe c поддерживает множество форм насмешек , включая Mocks and Stubs .
Если у вас есть какой-то промежуточный класс, который упаковывает эту функциональность REST API, скажем, вы Назовите его ServiceGateway
, тогда вы можете сделать макет этой службы в ваших тестах InSpe c с RSpe c double
примерно так:
gateway = double('ServiceGateway')
expect(gateway).to receive(:get_data).and_return({ data: [1,2,3] })
# instantiate class under test providing the double to execute the rest of the test.
Вы всегда должны проверять, какая версия RSpe c версия InSpe c, которую вы используете, зависит от вас. Вы можете сделать это, посмотрев файл Gemfile.lock
или переходное представление RubyGems.org. Например, InSpe c 4.18.104
зависит от RSpe c 3.9.0
транзитивно через inspec-core
драгоценный камень .
Одна заключительная мысль, если вы планируете взаимодействовать связка с API-интерфейсами REST и желающим получить более реалистичное c представление того, что они возвращают для более "законченного" теста стиля (который в конечном счете InSpe c), рассмотрите возможность использования гема vcr
. Этот гем выполняет запись / воспроизведение API, совершая реальный вызов в первый раз и используя сохраненные результаты в последующих тестах. Иногда оно дает ложное чувство безопасности (оно пропускает изменения API), но дает полный конец опыта.