К содержанию
Checkcraft
Практика в Checkcraft

Проверка суммы, скидки и округления в API

Каждая сумма в ответе похожа на правильную, но итог не сходится. Проверка фиксированного total не подходит, когда состав заказа меняется.

Подготовлено командой Checkcraft · Обновлено

Что получится

В учебном тесте сумма items[*].amount вычисляется и сравнивается с total. Для значений 100 и 200 итог 301 даёт ошибку, а 300 проходит.

Результат реального выполнения формулы и сравнения. Ожидаемое значение получено из элементов массива.
Результат реального выполнения формулы и сравнения. Ожидаемое значение получено из элементов массива. Полный размер ↗

Вычислить сумму массива

Добавьте «Вычислить переменную». Имя переменной expectedTotal, выражение приведено ниже. Затем «Поле JSON/источника логов» проверяет total оператором equals со значением %expectedTotal%.

sum("$.items[*].amount")
Настоящий редактор правила сравнения total с вычисленной переменной.
Настоящий редактор правила сравнения total с вычисленной переменной. Полный размер ↗

Проверить скидку

Сначала извлеките исходные значения в отдельные переменные. Если контракт задаёт скидку в процентах от subtotal, ожидаемый итог можно выразить через subtotal и discount. Формула ниже показывает именно такую модель. Она не подходит, если скидка относится только к части позиций или применяется после другого сбора.

round(%subtotal% * (1 - %discount% / 100), 2)

Сравнить два поля

Когда одно поле должно повторять другое, извлеките первое через «Извлечь в переменную» и сравните второе с подстановкой. Не задавайте в проверке случайное значение из одного заказа. Такой тест может проходить только на единственном примере.

Проверить округление по контракту

Заранее установите, на каком шаге округляется сумма и сколько знаков остаётся. Итог суммы округлённых строк может отличаться от округлённой суммы исходных значений. Добавьте примеры на границе округления, нулевую скидку и максимально допустимую скидку. Поддержка функции round не означает автоматического соответствия правилам вашего финансового расчёта.

Проверить не только итог

До формулы проверьте наличие и типы исходных полей. Отдельно определите поведение для пустого массива, отрицательных значений и отсутствующей суммы. Приложенный тест показывает сложение двух позиций; правила скидки нужно настроить под свой контракт и проверить самостоятельно.

Повторить на готовых данных

Здесь лежит учебный тест-кейс для Checkcraft, правильный JSON и вариант с намеренной ошибкой. Файлы доступны без регистрации. Это данные для упражнения, а не доступ к чужому API.

Если приложение уже открыто

Создайте коллекцию, конструктор проверки и тест-кейс через контекстное меню дерева. В редакторе нажмите «Импорт» и выберите файл тест-кейса. Откройте добавленный тест. Скопируйте содержимое правильного JSON и нажмите «Вставить данные для анализа». Затем «Запустить тест-кейс» и вкладку «Результат».

Повторите те же действия с испорченным JSON, сохранив правила. В первом запуске ожидается успешная проверка, во втором ошибка. Если результат отличается, сравните импортированный тест, источник данных и текст отчёта.

Сверить с полученными при подготовке страницы отчётами можно по файлам успешного прогона и прогона с ошибкой. Примеры проверены 14 сентября 2026 года на текущем исходном коде приложения.

От примера к своей проверке

Посмотреть, как это работает на ваших данных

Можно начать с учебного файла на этой странице, увидеть найденную ошибку и затем заменить данные своим обезличенным примером. Для Windows и Linux доступна Free (beta) без ограничения срока.

Получить Free (beta)Как получить и запустить приложение

Для получения сборки нужен аккаунт и подтверждение email. Состав бесплатной версии опубликован на странице тарифов.