> Как работать с JSON в автотестах (JavaScript)

Уровень: senior · Роль: qa · Категория: Технические вопросы

Компании: DCloud, Merlion

Стек: JavaScript

> Пример ответа

При работе с JSON в автотестах на JavaScript ключевые задачи - это парсинг, валидация, сравнение и генерация данных. Для этого удобно использовать встроенный объект JSON и библиотеки вроде chai с плагинами.

1. Парсинг и сериализация
JSON.parse() преобразует строку в объект, JSON.stringify() - наоборот. Пример:

JAVASCRIPT
const response = '{"name":"Test","status":"ok"}';
const obj = JSON.parse(response);
console.log(obj.name); // "Test"

2. Сравнение JSON
Для проверки в тестах используйте глубокое сравнение. С chai:

JAVASCRIPT
const expected = { id: 1, title: "Example" };
const actual = JSON.parse(responseBody);
expect(actual).to.deep.equal(expected);

Или с jest:

JAVASCRIPT
expect(actual).toEqual(expected);

3. Валидация схемы
Библиотека ajv проверяет структуру и типы данных:

JAVASCRIPT
const 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. Работа с вложенными данными
Используйте точечную нотацию или деструктуризацию:

JAVASCRIPT
const data = JSON.parse(response);
const { user: { name, email } } = data;

5. Генерация тестовых данных
Создавайте JSON динамически:

JAVASCRIPT
const payload = { username: `user_${Date.now()}`, role: "admin" };

6. Обработка ошибок
Оберните парсинг в try-catch для избежания падения тестов:

JAVASCRIPT
try {
const obj = JSON.parse(response);
} catch (e) {
throw new Error(`Invalid JSON: ${e.message}`);
}

Совет: Для API-тестов используйте библиотеки supertest или axios - они автоматически парсят JSON-ответы.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью