Моя файловая структура выглядит примерно так:
Product/
|- httpdocs/
|- jest.config.js
|- modules/
|- modules1/
|- jest.config.js
|- modules2/
|- jest.config.js
|- modules3/
|- jest.config.js
В каждом jest.config.js
под модулями у меня есть некоторая конфигурация для этого конкретного модуля, например: setupFiles: ['<rootDir>/testHelpers/setup.js']
.
В моем верхнем jest.config.js
(под httpdocs
) я определил свои различные проекты:
projects: [
'<rootDir>/modules/module1',
'<rootDir>/modules/module2',
'<rootDir>/modules/module3'
]
Когда я запускаю jest
под httpdocs
, тесты терпят неудачу, потому что файлы настройки (и другая конфигурация) игнорируются в моих файлах module/jest.config.js
.
Когда я запускаю jest
под module1
, все тесты проходят успешно
Я что-то не так делаю или опция projects
так не работает?
Поэтому я реструктурировал свои конфигурации, как предложил @cimenx.
Product/
|- jest.config.js
|- httpdocs/
|- modules/
|- modules1/
|- foo/
|- bar/
|- foobar.js
|- foobar.test.js
|- modules2/
|- ...
мой файл jest.config.js выглядит так:
module.exports = {
rootDir: './httpdocs/modules',
testPathIgnorePatterns: ['/node_modules/', '/smsc/'],
projects: [
{
displayName: 'module1',
testMatch: ['<rootDir>/module1/*.test.js']
},
{
displayName: 'module2',
testMatch: ['<rootDir>/module2/*.test.js']
}
]
};
На данный момент проблема в том, что jest не может найти никаких тестов внутри моих модулей.
Пока писал свой ИЗМЕНИТЬ 1, пробовал другие конфиги ...
Очевидно, мой <rootDir>
- это всегда каталог, в котором находится мой файл jest.config.js
.
Решением для меня было записать весь путь от файла конфигурации к модулям без опции rootDir: './some/path'
.
module.exports = {
projects: [
{
displayName: 'module1',
testMatch: ['<rootDir>/httpdocs/modules/module1/**/*.test.js']
},
{
displayName: 'module2',
testMatch: ['<rootDir>/httpdocs/modules/module2/**/*.test.js']
}
]
};
Спасибо за помощь!
Вероятно, вам следует удалить все jest.config.js
на каждом модуле и переписать Product/httpdocs/jest.config.js
, чтобы он выглядел примерно так:
module.exports = {
projects: [
{
displayName: "modules1",
setupTestFrameworkScriptFile: '<rootDir>/modules/modules1/jest.setup.js',
/*
Jest config that is specific for modules1
*/
testMatch: ["<rootDir>/modules/modules1/*.spec.js"],
},
{
displayName: "modules2",
setupTestFrameworkScriptFile: '<rootDir>/modules/modules2/jest.setup.js',
/*
Jest config that is specific for modules2
*/
testMatch: ["<rootDir>/modules/modules2/*.spec.js"]
}
]
}
Я попробовал ваше предложение, но теперь, когда я запускаю jest
, он больше не может найти никаких тестов. Пробовал дюжину разных конфигураций, но ничего не нашел. Когда я удаляю опцию projects
и устанавливаю конфигурацию одного проекта из опции projects
, она работает для этого одного проекта. Когда я пытаюсь снова вставить его в опцию projects
(также с другими проектами), она не работает.
Странно, у меня настройка работает нормально. Не могли бы вы отредактировать свой вопрос и пошагово рассказать, чем вы сейчас занимаетесь? Кроме того, просто хочу убедиться, каково имя ваших тестовых файлов?
Рад, что помог. Я думал, вы запускаете команду
jest
в Продукт / httpdocs ?