Новый open-source для тестирования ещё не созданных API

Мы в Evrone не только пользуемся open-source решениями, но и стараемся внести свой вклад. Недавно мы сделали Dummy, который помогает запустить mock-сервер на основе контракта API, чтобы протестировать API еще до того, как он будет создан.

Наш golang разработчик Александр Мелентьев придумал Dummy, работая над проектом клиента. Нужна была интеграция с API партнера, но использовать настоящий API было нельзя. Со спецификацией OpenAPI можно было бы сгенерировать сервер с помощью swagger-codegen, но тогда мы бы получали пустые ответы, для теста нужно было писать их вручную. Поэтому мы решили написать инструмент, который на основе OpenAPI генерировал бы сервер, способный выдавать в ответ примеры из спецификации.

Пока Dummy работает только с OpenAPI, но вскоре мы добавим GraphQL, RAML и gRPC. Подробнее о том, как всё устроено, читайте в кейсе у нас на сайте.

0
11 комментариев
Написать комментарий...
Руслан

А вообще молодцы ребята! придумали в процессе работы и вывели на рынок новую фичу, ваш продакт крут!

Ответить
Развернуть ветку
Evrone
Автор

Спасибо!

Ответить
Развернуть ветку
Руслан

почему вы назвали его словом "дурачок"?

Ответить
Развернуть ветку
Evrone
Автор

Это многозначное слово, мы ориентировались на значение манекен или чучело. В тестах есть понятие dummy API, то есть фиктивный API

Ответить
Развернуть ветку
Gera

Если не секрет, чем не подошли уже существующие решения?

Ответить
Развернуть ветку
Evrone
Автор

В существующих решениях генерируются только заглушки, которые выдают пустые ответы, так что тестовые ответы пришлось бы писать самим. Dummy запускает тестовый сервер одной командой и присылает ответы из спецификации.

Ответить
Развернуть ветку
Gera

А разве призма не ответ из спеков тоже возвращает? Было так вроде…

(Не подумайте что наезжаю, действительно любопытно, проект очень интересный, и Go люблю, обязательно попробую 👍)

Ответить
Развернуть ветку
Evrone
Автор

Все так, разница в том, что prism написан на NodeJS. Позже в Dummy добавится более удобная работа с ошибками и поддержка других форматов API

Ответить
Развернуть ветку
Сергей Левченко

Есть нормальные, которые не заглушки отдают, а генерят данные на основе спеки.

https://hub.docker.com/r/realfengjia/fakeit
https://hub.docker.com/r/danielgtaylor/apisprout
https://hub.docker.com/r/dotronglong/faker

Ответить
Развернуть ветку
Sasha Melentyev

Практически все перечисленные - заброшены. Плюс по мимо спецификации требуют заполнения дополнительных сущностей. Фейкеры это немного не то, им нужно явно передать какой-то конфиг, который еще нужно написать. Это немного не тот кейс.
Dummy же принимает на вход именно контракт, и больше ничего заполнять дополнительно не нужно

Ответить
Развернуть ветку
Сергей Левченко

Я пользуюсь первым из списка уже достаточно давно. Он так и работает, как вы описали, просто принимает контракт, ничего дополнительно делать не нужно.

Остальные два я просто нагуглил за пару минут в довесок. Сейчас посмотрел - второй тоже по спеке работает, третий - вот там да, кастомный конфиг.

Про заброшены - ну так там все что было необходимо - сделано, чего там обновлять?

А так молодцы конечно, я обязательно "пощупаю" и вашу разработку.

Ответить
Развернуть ветку
8 комментариев
Раскрывать всегда