Макет объектов в Inspec - PullRequest
       29

Макет объектов в Inspec

0 голосов
/ 06 апреля 2020

В Inspe c есть понятие фиктивных объектов? Я хочу смоделировать REST API, потому что сервер, предоставляющий этот API, недоступен в моем конвейере сборки.

1 Ответ

0 голосов
/ 18 апреля 2020

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), но дает полный конец опыта.

...