Ответ
При тестировании на 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
}); Видео-ответы
▶
КАЙФОВОЕ РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА MIDDLE/SENIOR FRONTEND РАЗРАБОТЧИКА С ЗП 310К!
▶
СОБЕСЕДОВАНИЕ MIDDLE REACT FRONTEND || ЗП ОТ 230К
▶
Техническое собеседование с подписчиком на frontend intern/junior: JS, React, Next, HTML, CSS, REST
▶
Тестовое собеседование с подписчиком JavaScript, TypeScript, Node.js, Next.js, React.js, Git, Prisma
▶
Frontend Собеседование с разбором. Путь к трудоустройству 2024
▶
Тестовое собеседование #2. Вопрос по JavaScript на техническом интервью Junior Frontend разработчика
▶
Тестовое собеседование #1. Вопрос по JavaScript на техническом интервью Junior Frontend разработчика
▶
Собеседование frontend разработчика 2024
▶
Собеседование frontend разработчика 2024
▶
71 QA Interviews Stream. 13.10.2022 at 19:45 GMT(UTC) +3
▶
Собеседование cтажера Frontend разработчика.
▶
Public Technical Interview for a JavaScript Engineer Role | Публичное собеседование JavaScript
▶
#1. Публичное собеседование JUNIOR Frontend DEV: JS + VUE. 16.8.2020