Вчера я обнаружил, что на самом деле можно проводить модульное тестирование с помощью Svelte! Когда я в последний раз пытался найти способ модульного тестирования Svelte в конце 2019 года, мне казалось, что это пока невозможно. Svelte все еще говорит, что на этот вопрос пока нет хорошего ответа, поэтому я поверил им на слово. Но это очень возможно!
Это вместе с недавно выпущенной поддержкой TypeScript действительно меняет правила игры для использования Svelte в более крупных проектах и продвижения его в качестве альтернативы при работе с клиентами и коллегами.
Так как вы это делаете?
- Прежде всего, следуйте инструкциям по настройке в Библиотеке тестирования.
Согласно странице установки, этого должно быть достаточно. Для меня это было не так. Все операторы 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
для импорта во внешнем приложении. Это приводит нас к…
3. Вот и все. Ваши тесты должны работать.
Я действительно не нашел никого с этой проблемой, потому что все, казалось, с самого начала использовали Babel или Typescript.
Советы по тестированию компонентов Svelte
Вот несколько советов о том, как тестировать события и как отображать компоненты в тестовых файлах.
«Вот еще несколько полезных советов по использованию jest-svelte.
Дайте мне знать, помогло ли это вам, если это не работает для вас или чего-то не хватает!
Спасибо за прочтение ❤