Ответ
При тестировании на JavaScript (например, в автотестах на Cypress/Playwright или unit-тестах на Jest) часто приходится проверять и обрабатывать массивы с данными. Вот ключевые методы:
1. Методы для проверок (Assertions):
array.includes(element)/array.indexOf(element) > -1– проверить наличие элемента.array.length– проверить размер массива.array.every(predicate)– убедиться, что все элементы удовлетворяют условию.array.some(predicate)– убедиться, что хотя бы один элемент удовлетворяет условию.
2. Методы для фильтрации и поиска тестовых данных:
array.filter(predicate)– отфильтровать массив по условию (например, найти все незавершенные задачи).array.find(predicate)– найти первый элемент, удовлетворяющий условию.array.findIndex(predicate)– найти индекс первого подходящего элемента.
3. Методы для трансформации данных перед проверкой:
array.map(transformFn)– преобразовать массив (например, извлечь только ID или заголовки).array.slice(start, end)– взять срез массива для проверки пагинации.array.sort(compareFn)– отсортировать для стабильного сравнения.
4. Методы для агрегации и сводок:
array.reduce(reducerFn, initialValue)– вычислить сумму, среднее и другие агрегаты для проверки статистики.
Практический пример в тесте (Cypress/Jest):
// Проверка, что в таблице отображаются только активные пользователи
cy.get('[data-testid="user-row"]').should(($rows) => {
// 1. Извлекаем данные из DOM в массив статусов
const statuses = $rows.map((i, el) => Cypress.$(el).attr('data-status')).get();
// 2. Проверяем, что ВСЕ статусы равны 'active'
expect(statuses).to.have.length.greaterThan(0);
const allActive = statuses.every(status => status === 'active');
expect(allActive).to.be.true;
// Альтернативная проверка через every
expect(statuses).to.satisfy((arr) => arr.every(s => s === 'active'));
});
// Unit-тест: проверка фильтрации
import { filterActiveUsers } from './userUtils';
test('filterActiveUsers returns only users with isActive: true', () => {
const testUsers = [
{ id: 1, name: 'Alice', isActive: true },
{ id: 2, name: 'Bob', isActive: false },
{ id: 3, name: 'Charlie', isActive: true }
];
const result = filterActiveUsers(testUsers);
expect(result).toHaveLength(2);
expect(result.every(user => user.isActive)).toBeTruthy();
expect(result.map(u => u.id)).toEqual([1, 3]); // Проверяем конкретные ID
}); Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶