Vue test utils - Тестирование списка (v-for)

vue test utils - Тестирование списка (v-for)

Компонент:

<template>
  <ul>
    <li v-for="item in items" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

<script setup>
defineProps({
  items: {
    type: Array,
    default: () => []
  }
});
</script>

Задание:

Передайте items = [{ id: 1, name: 'Яблоко' }, { id: 2, name: 'Апельсин' }] и проверьте, что отображаются оба элемента.

import { mount } from '@vue/test-utils';
import { describe, it } from 'vitest';
import Vfor from '@/components/Vfor.vue';

describe('Vfor', () => {
    it('проверка переданных элдементов', () => {
        const props = [{ id: 1, name: 'Яблоко' }, { id: 2, name: 'Апельсин' }];
        const wrapper = mount(Vfor, {
            props: {
                items: props
            }
        });
        const items = wrapper.findAll('li');
        expect(items).toHaveLength(2);

        items.forEach((item, index) => {
            expect(item.text()).toBe(props[index].name)
        })
    })
})

toHaveLength - Проверяет свойство .length значения.

Пример использования - expect(value).toHaveLength(number)

В данном решении применено тестирование с использованием цикла.

Изначально мы определили массив элементов который будем прокидывать в компонент, затем этот массив используем для проверки.