> Как работать с JSON в автотестах (JavaScript)
Уровень: senior · Роль: qa · Категория: Технические вопросы
Компании: DCloud, Merlion
Стек: JavaScript
> Пример ответа
При работе с JSON в автотестах на JavaScript ключевые задачи - это парсинг, валидация, сравнение и генерация данных. Для этого удобно использовать встроенный объект JSON и библиотеки вроде chai с плагинами.
1. Парсинг и сериализация
JSON.parse() преобразует строку в объект, JSON.stringify() - наоборот. Пример:
JAVASCRIPTconst response = '{"name":"Test","status":"ok"}';const obj = JSON.parse(response);console.log(obj.name); // "Test"
2. Сравнение JSON
Для проверки в тестах используйте глубокое сравнение. С chai:
JAVASCRIPTconst expected = { id: 1, title: "Example" };const actual = JSON.parse(responseBody);expect(actual).to.deep.equal(expected);
Или с jest:
JAVASCRIPTexpect(actual).toEqual(expected);
3. Валидация схемы
Библиотека ajv проверяет структуру и типы данных:
JAVASCRIPTconst Ajv = require('ajv');const ajv = new Ajv();const schema = { type: 'object', properties: { id: { type: 'number' } } };const validate = ajv.compile(schema);const valid = validate(JSON.parse(response));if (!valid) console.log(validate.errors);
4. Работа с вложенными данными
Используйте точечную нотацию или деструктуризацию:
JAVASCRIPTconst data = JSON.parse(response);const { user: { name, email } } = data;
5. Генерация тестовых данных
Создавайте JSON динамически:
JAVASCRIPTconst payload = { username: `user_${Date.now()}`, role: "admin" };
6. Обработка ошибок
Оберните парсинг в try-catch для избежания падения тестов:
JAVASCRIPTtry {const obj = JSON.parse(response);} catch (e) {throw new Error(`Invalid JSON: ${e.message}`);}
Совет: Для API-тестов используйте библиотеки supertest или axios - они автоматически парсят JSON-ответы.
> Похожие задачи по qa
Можно ли вложить XML в JSON и JSON в XML
Был ли у вас опыт работы с JSON?
Как смотреть логи мобильного приложения и какими способами?
Что проверяют юнит тесты
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью