Автотест берёт «последний заказ» запросом с LIMIT 1 и иногда падает
В автотесте после создания заказа через API проверка в базе делается так:
SELECT id, total FROM orders WHERE user_id = 42 LIMIT 1;
Подразумевается, что вернётся только что созданный заказ. У тестового пользователя 42 уже накопилось несколько сотен заказов. Тест падает примерно раз в десять прогонов.
В чём причина?
- Дело в типе колонки total: округление даёт разные значения при сравнении
- Нужен DISTINCT: без него запрос возвращает дубликаты строк
- Без ORDER BY порядок строк не гарантирован, поэтому «первая» строка может оказаться любой
- LIMIT 1 всегда отдаёт самую свежую строку, проблема в кэше соединения
