Метод get() в библиотеке Enzyme является одним из
способов доступа к элементам, найденным в дереве компонента, с помощью
индекса. Этот метод используется в тестах для получения конкретного
элемента из набора, который был найден с помощью методов поиска, таких
как find(). В отличие от других методов, например,
first() или last(), get()
предоставляет доступ к элементам с определённым индексом в наборе,
позволяя извлекать нужный элемент по его порядковому номеру.
Метод get() используется, когда необходимо извлечь
элемент на определённой позиции из множества элементов, найденных в
компоненте. Это может быть полезно, например, когда элемент на
определённой позиции в списке или массиве имеет особое значение для
теста.
Пример использования метода get():
const wrapper = mount(<MyComponent />);
const buttons = wrapper.find('button');
const secondButton = buttons.get(1); // Получаем второй элемент (индексация начинается с 0)
В данном примере мы находим все кнопки в компоненте, а затем
извлекаем вторую кнопку с помощью индекса 1. Индексация в Enzyme, как и
в стандартном JavaScript, начинается с 0, поэтому get(1)
возвращает второй элемент.
Метод get() всегда возвращает одиночный элемент, если
индекс существует. Если индекс выходит за пределы массива найденных
элементов, будет выброшено исключение, что может привести к сбою теста.
Это важный момент, так как в случае с неправильным индексом тест может
упасть, и потребуется отловить такие ошибки на этапе разработки.
const wrapper = mount(<MyComponent />);
const items = wrapper.find('li');
const itemAtInvalidIndex = items.get(100); // Попытка доступа к элементу по недопустимому индексу
В данном случае, если элементов li меньше 101, вызов
метода get(100) приведёт к ошибке.
first() и last() Методы first() и
last() — это специализированные методы, которые
предоставляют доступ к первому и последнему элементу коллекции
соответственно. Они полезны, когда нужно получить конкретный элемент, но
не на основе индекса, а по его порядковому месту в наборе.
const firstButton = buttons.first(); // Получаем первую кнопку
const lastButton = buttons.last(); // Получаем последнюю кнопку
Эти методы, в отличие от get(), не требуют указания
индекса, что делает их удобными, когда нужно работать с крайними
элементами.
at() Метод at() также позволяет
получить доступ к элементу по индексу, но в отличие от
get(), он не выбрасывает исключение в случае выхода индекса
за пределы массива. Вместо этого at() вернёт
undefined если индекс не существует. Это делает
at() более безопасным для использования в тестах, где важно
избежать ошибок в случае несуществующих индексов.
const thirdButton = buttons.at(2); // Получаем третий элемент
В случае, если индекс выходит за границы массива, метод вернёт
undefined, и тест не завершится с ошибкой.
Метод get() полезен в тех случаях, когда точно известно,
что элемент на указанном индексе существует. Он подходит для ситуаций,
когда элементы в компоненте предсказуемы и их количество ограничено.
Например, если в компоненте отображается фиксированное количество
элементов (например, список с несколькими пунктами), можно использовать
get() для извлечения элементов по индексам.
Преимущества:
Недостатки:
Метод get() является мощным инструментом в арсенале
тестировщика при работе с Enzyme. Он предоставляет точный способ
извлечения элементов по индексам, однако требует внимательности в случае
с динамическими или неопределёнными наборами элементов. В случаях, когда
индексы могут быть изменчивыми или неизвестными, лучше использовать
другие методы, такие как at(), чтобы избежать ошибок
выполнения тестов.