ну буквально небольшой сервис был построен вокруг еластика, и тут встал вопрос что надо как-то бы тестировать запросы в эластик без моков.
Кто-нибудь сталкивался с тестированием эластиксёрча без моков?
Основная проблема это загрузка данных в индекс для тестирования. Допустим мы поднимаем контейнер эластика перед тестами, загружаем туда тестовы данные прям из теста, и потом тестируем методы которые что-то возвращают из базы.
Так вот проблема в том что нам условно 2-3 записи надо загрузить в индекс, так вот загружает он без проблем, только вот когда тест идёт дальшё и использует метод который достаёт что-то из эластика, тут проблема поскольку данные в эластике индексируются не моментально, и есть задержка, тобишь мы выоплнили функцию положи данные в индекс, дальше используем функцию возьми вот с такими фильтрами данные из индекса.
!И это отрабатывает слишком быстро!
Если между методом который грузит данные в эластик и методом который читает данные из эластика со всякими фильтрами воткнуть time.Sleep то всё более менее работает, но без него нет
Если есть опыт с такой ситуацией, подскажите пожалуйста что можно сделать
Можно сделать refresh или flush на индексе, после того как вы записали тестовые данные. Обе эти операции перестраивают внутренние индексы и после этого запросы на поиск будут отрабатывать корректно.
Будь постгрес, ну или норм СУБД, такой проблемы наверное не было, потому что метод кладущий данные в бд как бы ждёт когда данные полностью загрузятся, но вот с эластиком это что-то особое
Так-с, спасибо за вариант, щас почитаю что это и как это
Flsuh не помог, Refresh агонь помог! Спасибо большое добрый человек
Обсуждают сегодня