Существует возможность выставлять помощники как глобальные функции без необходимости явного импорта модулей.
- Jest позволяет настроить запуск некоторых файлов перед тем, как каждый тестовый файл будет выполнен через
setupFiles
опция конфигурации - Также Jest предоставляет
global
объект, который вы можете изменить, и все, что вы положите туда, будет доступно в ваших тестах.
Пример
package.json:
"jest": {
"setupFiles": ["helpers.js"]
}
helpers.js:
global.mockFetchJsonResponse = (data) => {
ok: () => true,
json: () => data
};
somecomponent.test.js:
mockFetchJsonResponse(); // look mom, I can call this like say expect()!
с помощью TypeScript
TypeScript будет жаловаться на cannot find name 'mockFetchJsonResponse'
.Это можно исправить, добавив файл объявления:
helpers.d.ts:
declare function mockFetchJsonResponse(data: any): any;
И добавьте этот файл в раздел files
вашего файла tsconfig.json:
// ...
"files": [
"./.jest/helpers.d.ts"
],
// ...
Это также предоставляет объявление mockFetchJsonResponse
всей вашей кодовой базе, что, вероятно, нежелательно.Я не могу придумать простого способа избежать этого.
Конечно, это не ответит на ваш прямой вопрос "куда поместить файлы", но в любом случае это зависит от вас.Вам просто нужно указать эти файлы в разделе setupFiles
.Поскольку import
не требуется в тестах, это не имеет значения.
Что касается тестирования помощников, я не уверен.Посмотрите, что это часть инфраструктуры тестирования, как сам файл спецификации.И мы не пишем тесты для тестов, иначе это никогда не остановится.Конечно, это зависит от вас - скажите, действительно ли логика действительно сложна и трудна для подражания.Но если хелпер предоставляет слишком сложную / сложную логику, это приведет к тому, что сами тесты будут непонятны, вы согласны?
благодарность этой статье о тестировании компонентов с intl .Никогда прежде не имел дело с globals
в шутку.