开玩笑地为每个项目创建了不同的setupfile文件

Pie*_*ten 6 config project jestjs

我的文件结构是这样的:

Product/
    |- httpdocs/
        |- jest.config.js
        |- modules/
            |- modules1/
                |- jest.config.js
            |- modules2/
                |- jest.config.js
            |- modules3/
                |- jest.config.js
Run Code Online (Sandbox Code Playgroud)

在每个jest.config.js模块下,我都有针对该特定模块的一些配置,例如:setupFiles: ['<rootDir>/testHelpers/setup.js']

在顶部jest.config.js(在下方httpdocs),我定义了不同的项目:

projects: [
    '<rootDir>/modules/module1',
    '<rootDir>/modules/module2',
    '<rootDir>/modules/module3'
]
Run Code Online (Sandbox Code Playgroud)

当我在Windows jest下运行时httpdocs,测试会失败,因为安装文件(以及其他配置)在我的module/jest.config.js文件中被忽略了。

当我运行jestmodule1,所有的测试成功

我是在做错什么还是该选项projects无法正常工作?

--------编辑1 --------

所以我像@cimenx建议的那样重构了我的配置。

Product/
    |- jest.config.js
    |- httpdocs/
        |- modules/
            |- modules1/
                |- foo/
                    |- bar/
                        |- foobar.js
                        |- foobar.test.js
            |- modules2/
                |- ...
Run Code Online (Sandbox Code Playgroud)

我的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']
    }
  ]
};
Run Code Online (Sandbox Code Playgroud)

目前的问题是,笑话在我的模块中找不到任何测试。

--------解决方案--------

当我编写EDIT 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']
        }
    ]
};
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

DrS*_*sor 0

也许您应该删除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"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)