我正在尝试用mocha测试一些前端类型脚本代码。问题是,我正在使用WebSturm中用于智能感知的打字参考标签来解决我的前端代码。我必须使用RequireJS在浏览器中加载文件,因为引用标记不会这样做。到目前为止,我能做到。
但接下来,我想用mocha测试代码——这就是问题的开始。mocha测试文件似乎与正在测试的代码无关,除非它使用import/require语句导入,即使已经添加了typescript引用标记。如果,我尝试导出测试中的TS文件中的代码,并将其导入到MOCHA单元测试文件中,那么包含前端代码的其他TS文件将无法再解析它。
考虑这种情况:

TS File A references TS File B using Typescript reference tags.
Mocha Unit Test X tries to reference TS file B using reference tags, which does not work.
Mocha Unit Test X tries to reference TS file B using import/require statments, which requires that code in TS file B be "exported".
If TS file B is "exported" then File A can't reference it anymore.

由于我试图用mocha测试typescript/nodejs项目,我有点被困在即将出现的荒谬的依赖管理系统中。请帮助我理解依赖关系在这里是如何工作的,以及我如何能够将其整理/简化。
如果有一个更好的和同样强大的框架适合于这种能够提供单元测试(以及端到端测试)的项目,请提出建议。

最佳答案

最简单的解决方案:在前端使用amd(不是引用合并),在mocha上使用commonjs。明显的缺点是需要编译两次代码,一次是在运行前端,另一次是在运行mocha时。mocha案例中生成的js与前端案例中生成的js不同。您可能需要使用--outDir来区分这两种情况。

07-24 09:46
查看更多