我正在使用Typescript重新实现现有功能,我想使用Jasmine进行测试。我开始使用Jasmine和Javascript规范,但这感觉不对。现在我尝试使用Typescript规范(感觉正确),但我无法找到正确的配置来生成正确位置的javascript文件。
我正在使用:
具有以下结构:
/base_dir
/src
*.ts files
/src-spec
*.ts files (only specs)
/spec
*.js files (generated by typescript compiler I hope)
/lib/js
*.js files (generated by typescript compiler as well)
我目前为Grunt定义了以下配置:
ts: {
libs : {
src: ["src/*.ts", "!node_modules/**"],
outDir: 'lib/js',
options: {
keepDirectoryHierarchy: false,
rootDir: "lib/js"
}
},
specs : {
src: ["src-spec/*.ts"],
outDir: ['spec'],
options: {
rootDir: "spec",
keepDirectoryHierarchy: false
}
}
但结果目录结构如下:
/lib/js/*.js files // produced correctly
/spec/src/*.js // same content as /lib/js
/spec/src-spec/*.js // the corresponding spec file
当我运行Jasmine时,/spec/src-spec/
中的规范文件找不到/lib/js
和/spec/src
中的库。
的推荐解决方案是什么?
答案 0 :(得分:2)
这里推荐的解决方案是什么
就个人而言,我喜欢单一的tsconfig.json
用于IDE集成。 src
内的所有内容(包括测试)outDir
到lib
。最后只需.npmignore
lib/tests
。
此处涵盖src
和lib
的组织:https://basarat.gitbooks.io/typescript/content/docs/quick/nodejs.html
答案 1 :(得分:1)
@basarat的回答给了我正确的方向,这是适合我上述问题的解决方案:
将结构更改为:
/src
*.ts (app files)
tests/*.ts (test files)
/lib/js
*.js (generated app files)
tests/*.js (generated test files)
jasmine.json (configuration for the changed paths)
jasmine.json
必须更改为:
{
"spec_dir": "lib/js/tests"
...
}
Gruntfile.js
必须更改为:
jasmine: {
exec: 'jasmine.cmd JASMINE_CONFIG_PATH=jasmine.json'
}
之后,所有文件都照常编译,转到正确的位置,从app文件到其他文件的引用和spec文件到app文件的引用都是稳定的。