Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打字脚本+;茉莉花/摩卡,但没有全球类型?_Javascript_Unit Testing_Typescript_Jasmine_Mocha.js - Fatal编程技术网

Javascript 打字脚本+;茉莉花/摩卡,但没有全球类型?

Javascript 打字脚本+;茉莉花/摩卡,但没有全球类型?,javascript,unit-testing,typescript,jasmine,mocha.js,Javascript,Unit Testing,Typescript,Jasmine,Mocha.js,我想使用一个测试框架,比如Jasmine或Mocha。然而,这样做意味着通过npm添加它们的@types库,不幸的是这些库污染了全局名称空间 这意味着在编写应用程序代码时,IntelisSense包含测试函数,尽管这是有史以来最常见的问题,但它仍然让我感到恼火 我希望可以导入每个*.spec.ts文件顶部的库,但定义文件似乎不支持模块 我发现了另一个名为Tape的库,它使用模块导出,但是它相当基本,没有用于测试的浏览器UI(它们出现在浏览器控制台中) 有人有什么建议吗?一个可能的解决方案是在编译

我想使用一个测试框架,比如Jasmine或Mocha。然而,这样做意味着通过npm添加它们的@types库,不幸的是这些库污染了全局名称空间

这意味着在编写应用程序代码时,IntelisSense包含测试函数,尽管这是有史以来最常见的问题,但它仍然让我感到恼火

我希望可以导入每个
*.spec.ts
文件顶部的库,但定义文件似乎不支持模块

我发现了另一个名为
Tape
的库,它使用模块导出,但是它相当基本,没有用于测试的浏览器UI(它们出现在浏览器控制台中)


有人有什么建议吗?

一个可能的解决方案是在编译应用程序的
tsconfig.json
中添加
“类型”:[]
。我的一些项目的结构如下:

  • src
    包含应用程序代码,并具有用于编译应用程序的
    tsconfig.json

  • test
    包含测试代码,并具有适合测试的
    tsconfig.json

如果这两个文件需要共享配置,我有一个顶级的
tsconfig base.json
,其他两个配置文件通过
“extends”进行扩展:“./tsconfig base”

当我有一个如上所述的项目结构时,只需在我的
src/tsconfig.json
中添加
“类型”:[]
,就足以对应用程序代码隐藏Mocha globals。请注意,有些项目需要列出至少一些包,而不是空数组。起初,我认为我必须在
中列出我的应用程序使用的每个包的“类型”
,但事实并非如此,因为,如以下所述:

指定
“类型”:[]
以禁用自动包含
@types

请记住,只有在使用带有全局声明的文件(而不是声明为模块的文件)时,自动包含才很重要例如,如果使用
import“foo”
语句,TypeScript仍然可以通过
node\u模块
&
node\u模块/@types
文件夹查找
foo
包。

重点补充


重要提示:某些项目结构可能使仅使用
“类型”
无法解决问题。我有一个不同于我上面描述的项目结构。我必须重构该项目的构建过程,以便能够通过为
“types”

添加适当的值,从应用程序文件中隐藏Mocha。这是一个新项目,因此我可以按照您的建议对其进行组织。考虑到当前开发环境的能力,这个答案似乎是最好的方法。