Dav*_*kes 7 unit-testing typescript
我目前有以下项目结构:
project/
tsconfig.json
webpack.config.js
package.json
node_modules/
...lots of dependencies
typings/
...lots of .d.ts files for the dependencies
src/
...folders for files for my projects
Run Code Online (Sandbox Code Playgroud)
我tsonfig.json
看起来像:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"outDir": "./js",
"rootDir": "./src",
"sourceMap": true,
"jsx": "react"
},
"exclude": [
"typings/main.d.ts",
"typings/main",
"node_modules"
]
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,我可以愉快地开发我的应用程序并在浏览器中运行它.
我现在想在我的项目中添加一些单元测试并来自Java背景,我最初的本能是将测试放在一个单独的文件夹中:
project/
test/
...all of my test cases
Run Code Online (Sandbox Code Playgroud)
当然,文件test/
夹中的文件需要引用我src/
文件夹中的代码.我该如何设置?
或者将测试内联放在src/
文件夹中并webpack.config.js
为它们设置单独的文件是"更好"的吗?
真的很困惑这在大型TypeScript项目中如何在实践中工作.
注意:我已经看过这个,但发现答案不是很有启发性.看来引用的功能讨论filesGlob
会对我有所帮助,但我只是想知道人们今天是怎么做的?
现在除了rootDir
,您可以使用rootDirs
"rootDirs": ["./scripts", "./src"],
Run Code Online (Sandbox Code Playgroud)
对于多个文件夹。
这是 API 文档:https : //www.typescriptlang.org/docs/handbook/module-resolution.html#virtual-directories-with-rootdirs
我认为您正在寻找路径映射。使用paths
编译器选项,您不仅可以指定到单个位置的映射,还可以指定到多个位置的映射。这是文档中的示例:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*",
"generated/*"
]
}
}
Run Code Online (Sandbox Code Playgroud)
如果编译器在预期位置没有找到模块,它将在“生成的”子文件夹中重复模块解析。该baseUrl
设置看似多余,但却是强制性的。
或者将测试内联放置在 src/ 文件夹中并为它们提供单独的 webpack.config.js 文件是否“更好”?
这就是我所做的。不要使用 TypeScript 编译器作为模块捆绑器(特别是如果您不使用模块https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md)。只需让它使用 webpack 为浏览器进行编译和捆绑,并按原样使用(如果使用模块 commonjs)后端(nodejs)。
归档时间: |
|
查看次数: |
2392 次 |
最近记录: |