jest проекты разные установочные файлы для каждого проекта не работает - PullRequest
0 голосов
/ 13 сентября 2018

Моя файловая структура выглядит примерно так:

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 так не работает?

-------- РЕДАКТИРОВАТЬ 1 --------

Поэтому я перестроил свои конфиги, как предложил @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']
        }
    ]
};

Спасибо за помощь!

1 Ответ

0 голосов
/ 13 сентября 2018

Вероятно, вам следует удалить все 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"]
        }
    ]
}
...