Новый open-source для тестирования ещё не созданных API
Мы в Evrone не только пользуемся open-source решениями, но и стараемся внести свой вклад. Недавно мы сделали Dummy, который помогает запустить mock-сервер на основе контракта API, чтобы протестировать API еще до того, как он будет создан.
Наш golang разработчик Александр Мелентьев придумал Dummy, работая над проектом клиента. Нужна была интеграция с API партнера, но использовать настоящий API было нельзя. Со спецификацией OpenAPI можно было бы сгенерировать сервер с помощью swagger-codegen, но тогда мы бы получали пустые ответы, для теста нужно было писать их вручную. Поэтому мы решили написать инструмент, который на основе OpenAPI генерировал бы сервер, способный выдавать в ответ примеры из спецификации.
Пока Dummy работает только с OpenAPI, но вскоре мы добавим GraphQL, RAML и gRPC. Подробнее о том, как всё устроено, читайте в кейсе у нас на сайте.
А вообще молодцы ребята! придумали в процессе работы и вывели на рынок новую фичу, ваш продакт крут!
Спасибо!
почему вы назвали его словом "дурачок"?
Это многозначное слово, мы ориентировались на значение манекен или чучело. В тестах есть понятие dummy API, то есть фиктивный API
Если не секрет, чем не подошли уже существующие решения?
В существующих решениях генерируются только заглушки, которые выдают пустые ответы, так что тестовые ответы пришлось бы писать самим. Dummy запускает тестовый сервер одной командой и присылает ответы из спецификации.
А разве призма не ответ из спеков тоже возвращает? Было так вроде…
(Не подумайте что наезжаю, действительно любопытно, проект очень интересный, и Go люблю, обязательно попробую 👍)
Все так, разница в том, что 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
Практически все перечисленные - заброшены. Плюс по мимо спецификации требуют заполнения дополнительных сущностей. Фейкеры это немного не то, им нужно явно передать какой-то конфиг, который еще нужно написать. Это немного не тот кейс.
Dummy же принимает на вход именно контракт, и больше ничего заполнять дополнительно не нужно
Я пользуюсь первым из списка уже достаточно давно. Он так и работает, как вы описали, просто принимает контракт, ничего дополнительно делать не нужно.
Остальные два я просто нагуглил за пару минут в довесок. Сейчас посмотрел - второй тоже по спеке работает, третий - вот там да, кастомный конфиг.
Про заброшены - ну так там все что было необходимо - сделано, чего там обновлять?
А так молодцы конечно, я обязательно "пощупаю" и вашу разработку.