Size: a a a

2020 May 06

AP

Alexander Popov in JS for testing
Slava Kharchenko
Гайз, может кто-то вкурсе как это реализовать.  Есть сервис который слушает кафку и туда же пишет. Нужно написать на это тесты. Для этого нужно скачать какой-то клиент кафки для ноды? и потом через нее подключаться к топиками и писать слушать их?
клиент кафки и писать/читать после/перед тестами
источник

SK

Slava Kharchenko in JS for testing
спасибо) для начала уже не плохо )
источник

AP

Alexander Popov in JS for testing
ну если сервис зависит только от кафки то это изи должно быть
источник

OK

Oleksandr Khotemskyi in JS for testing
Slava Kharchenko
Гайз, может кто-то вкурсе как это реализовать.  Есть сервис который слушает кафку и туда же пишет. Нужно написать на это тесты. Для этого нужно скачать какой-то клиент кафки для ноды? и потом через нее подключаться к топиками и писать слушать их?
Да, только если планируешь паралелить то возможно там с прослушкой месседжей хитро будет
источник

SK

Slava Kharchenko in JS for testing
ну по факту да только кафка и таблица в постгресе, просто я с этим еще не сталкивался и для меня это как рокет саинтс
источник

SK

Slava Kharchenko in JS for testing
потрогал руками поотсылал меседжи все проде понятно а с чего начать хз, буду короче ставить и пробовать
источник

MS

Maxim Shashkin in JS for testing
Alexander Popov
тебе не будут рады если ты не будешь уважать время других людей и гуглить перед тем как спрашивать
Готов покрыть время кто поможет и объяснит
источник

DK

Dmitriy Kovel in JS for testing
MnmlSniper
Конечно
Вопрос такой. Какие подходы вы используете при тестирование бэкенд api сервисов?
Мы сначала использовали подход тестирования с живыми зависимостями (базой).
Затем перешли на тесты с моками результатов от БД.
Но оба эти подхода имеют как плюсы так и минусы.
1.Тестироване без мока БД.
   минусы:
    - нужно делать пре и пост манипуляции с данными (добавлять, потом обязательно чистить )
    - тратит больше ресурсов
    - нужно более сложное окружение для теста (поднятая база)
    - нужна желательно отдельная базы
    - желательны пресеты и фикстуры данных

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

2.Тестироване на мока данных из БД.  
   минусы:
   - сами моки, это капец не тревиальная задача,
   иногда код для подготовки мока занимает 30+ строк, да и назвать его простым тоже нельзя
   - сильно падает смысл проверки формата результата работы сервиса, т.к. структура мока напрямую влияет на выходной результат
   (например тест на проверку не улетает ли на ружу хэш пароли, при получение инфа о пользователе)
   - тестирование НЕ максимально приближено к реальному поведению
   
   плюсы:
   - тесты отрабатывают быстрее
   - никаких зависимостей
   - простая среда исполнения
источник

B

Bola in JS for testing
Отдельная база, поднимается схема реальной бд, заливаются данные фикстурами. База потом просто грохается. Мокаются только внешние зависимости.
источник

DK

Dmitriy Kovel in JS for testing
Bola
Отдельная база, поднимается схема реальной бд, заливаются данные фикстурами. База потом просто грохается. Мокаются только внешние зависимости.
ну да это первый наш подход
источник
2020 May 07

DK

Dmitriy Kovel in JS for testing
мы правда не юзали отдельную базу и пресеты ))
источник

B

Bola in JS for testing
Не так уж это и долго. И пост операции не нужны - прибил базу и всё
источник

DK

Dmitriy Kovel in JS for testing
Bola
Отдельная база, поднимается схема реальной бд, заливаются данные фикстурами. База потом просто грохается. Мокаются только внешние зависимости.
а это ваш реальный опыт или размышления
источник

B

Bola in JS for testing
Dmitriy Kovel
а это ваш реальный опыт или размышления
Реальный. Я их не пишу, но пользуюсь (тесты для симфони на phpunit)
источник

DK

Dmitriy Kovel in JS for testing
Bola
Не так уж это и долго. И пост операции не нужны - прибил базу и всё
не всегда это помогает, например когда уникальные юзеры например
источник

B

Bola in JS for testing
Dmitriy Kovel
не всегда это помогает, например когда уникальные юзеры например
Зависит от проекта. Но моки - это реально геморрой ). Да и они на самом деле нужны только для внешки по отношению к тестируемому объекту
источник

DK

Dmitriy Kovel in JS for testing
Ок а как быть еще вот стаким кейсом.
Как и что вы тестируете если речь идет о методе который генерирует несколько сушностей в базе?
например метод создания встречи. когда он отрабатывает
в базе создается
встреча, уведомления каждому участнику, бронь на комнат ит.д.
надо ли что бы тест проверял не только входной json но еще и что были созданы и правильно созданы эти сущности
источник

DK

Dmitriy Kovel in JS for testing
потому что  посути, правильный выходной json невсегда гарант что все норм отработало
источник

DK

Dmitriy Kovel in JS for testing
мы сейчас стараемся косвено проверять правильность создания этих сущностей, ну тут дуратская ситуация что порой тело теста начинает занимать чуть ли не больше строк чем тело тестируемого метода
получается что имплементация переползает в тест
источник

B

Bola in JS for testing
В итоге пишете второй бэкенд)
источник