[英]Typescript + Jasmine / Mocha, but without global types?
我想使用一个测试框架,如Jasmine或Mocha。 但是,这样做意味着通过npm添加他们的@types库,不幸的是,这会污染全局命名空间。
这意味着在编写应用程序代码时,intelisense包含测试函数,这被认为是有史以来最先发生的问题,但它仍然让我讨厌。
我希望我可以在每个*.spec.ts
文件的顶部导入库,但定义文件似乎不支持模块。
我找到了另一个名为Tape
库,它使用模块导出,但是它非常基础,并且没有用于测试的浏览器UI(它们出现在浏览器控制台中)。
有没有人有任何建议?
一种可能的解决方案可能是将"types": []
到编译应用程序的tsconfig.json
中。 我的一些项目结构如下:
src
包含应用程序代码,并有一个tsconfig.json
用于编译应用程序,
test
包含测试代码,并有一个适合测试的tsconfig.json
。
如果这两个文件需要共享配置,我有一个顶级tsconfig-base.json
,其他两个配置文件通过"extends": "../tsconfig-base"
。
当我有一个像上面这样结构的项目时,只需在我的src/tsconfig.json
添加"types": []
即可从应用程序代码中隐藏Mocha全局变量。 请注意,某些项目需要列出至少一些包而不是空数组。 最初,我认为我必须在"types"
列出我的应用程序使用的每个包,但事实并非如此,因为如文档中所述:
指定
"types": []
禁用自动包含@types
包。请记住,只有在使用具有全局声明的文件时(与声明为模块的文件相对),自动包含才是重要的。 例如,如果使用
import "foo"
语句,TypeScript仍然可以查看node_modules
和node_modules/@types
文件夹以查找foo
包。
强调补充说。
重要警告:一些项目结构可能无法通过使用"types"
来解决问题。 我的项目结构与上面描述的不同。 我必须重构该项目的构建过程,以便能够通过为"types"
添加适当的值来隐藏应用程序文件中的Mocha。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.