什么是Typescript中import / require和reference标签之间的区别

时间:2014-01-12 17:01:42

标签: unit-testing typescript

我正在尝试使用Mocha测试一些前端的Typescript代码。问题是,我在Webstorm的intellisense中使用Typescript引用标记来解析我的前端代码。我必须使用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项目,我有点陷入即将到来的荒谬的依赖管理系统。请帮助我理解依赖关系在这里是如何工作的,如何解决/简化。

如果有一个更好,同样强大的框架适合这种可以提供单元测试(以及端到端测试)的项目,请建议。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案:在前端使用AMD(非参考合并)和在mocha上使用CommonJS。明显的缺点是你需要编译你的代码两次,一次是在运行前端时,另一种是在运行mocha时。在mocha案例中生成的JS与在前端案例中生成的JS不同。您可能希望使用--outDir来分隔这两种情况。