本质上,要让 Jest 与在 JSPM/SystemJS 上运行的应用程序配合得很好,您需要“教”它在 config.js 文件中保存的所有映射(或者您调用 System.config())
长答案是您需要为使用 JSPM 安装的每个依赖项创建一个条目,如下所示:
//jest configuration
moduleNameMapper: {
...
"^redux$": "redux@3.6.0",
...
}
对于您拥有的每个别名,您至少需要一个条目:
moduleNameMapper: {
...
"^common\\/(.*)": "<rootDir>/src/common/$1", //for a dir alias
"^actions$": "<rootDir>/src/actions/index", //for a file alias
...
}
您还需要在nodeNameMapper中有这些映射:
moduleNameMapper: {
...
"^npm:(.*)": "<rootDir>/jspm_packages/npm/$1",
"^github:(.*)": "<rootDir>/jspm_packages/github/$1",
...
}
最后,你需要有这个moduleDirectories配置:
moduleDirectories: ["node_modules", "jspm_packages/npm", "jspm_packages/github"]
这不是很实用,因为您不想保留所有依赖项注册表的两个副本,并且在它们更改时必须同步它们......
所以简短而更好的答案,你使用我的 gulp-jest-jspm插件:)
即使你不使用 gulp,你也可以在运行 Jest 之前使用它的getJestConfig()方法为你生成配置。