Вчера я обнаружил, что на самом деле можно проводить модульное тестирование с помощью Svelte! Когда я в последний раз пытался найти способ модульного тестирования Svelte в конце 2019 года, мне казалось, что это пока невозможно. Svelte все еще говорит, что на этот вопрос пока нет хорошего ответа, поэтому я поверил им на слово. Но это очень возможно!

Это вместе с недавно выпущенной поддержкой TypeScript действительно меняет правила игры для использования Svelte в более крупных проектах и ​​продвижения его в качестве альтернативы при работе с клиентами и коллегами.

Так как вы это делаете?

  1. Прежде всего, следуйте инструкциям по настройке в Библиотеке тестирования.

Согласно странице установки, этого должно быть достаточно. Для меня это было не так. Все операторы import в .js файлах сломались, когда я запускал тесты. Svelte заботится о .svelte файлах, поэтому этот импорт работает. Но если вы раньше писали приложения Svelte, вы могли знать, что иногда вы включаете обычные файлы .js для утилит или служб, и они также могут использовать операторы import. Дело в том, что у меня был мой stores.js с import { writable } from 'svelte/stores', а также все мои тестовые файлы.

Все тестовые файлы — это файлы .js, если только вы не работаете с TypeScript, поэтому импорт там тоже будет нарушен.

Некоторые сообщения об ошибках, с которыми вы можете столкнуться:

Не удалось выполнить набор тестов
import ‘@testing-library/jest-dom/extend-expect’;
SyntaxError: Unexpected string

or

Jest обнаружил непредвиденный токен
import { render, fireEvent } from ‘@testing-library/svelte’;
SyntaxError: Unexpected token {

Конечно, вы можете обойти это, используя require() вместо import во всем приложении. Библиотека тестирования говорит, что Babel и TypeScript необязательны, но я не уверен, что согласен. Я не знаю никого, кто использует операторы require для импорта во внешнем приложении. Это приводит нас к…

2. Настроить Babel для шутки

3. Вот и все. Ваши тесты должны работать.

Я действительно не нашел никого с этой проблемой, потому что все, казалось, с самого начала использовали Babel или Typescript.

Советы по тестированию компонентов Svelte

Вот несколько советов о том, как тестировать события и как отображать компоненты в тестовых файлах.

«Вот еще несколько полезных советов по использованию jest-svelte.

Дайте мне знать, помогло ли это вам, если это не работает для вас или чего-то не хватает!

Спасибо за прочтение ❤