为角库设置Karma
我目前正在构建一个Angular库,我希望能够运行一些测试。在遵循these指示之后,我设法正确地设置了一切,并且实际上能够运行我的测试。为角库设置Karma
主要问题
虽然一切运行正常尴尬的事情发生了。当我在.ts
文件旁边运行npm test
时,会生成一个.js
文件。正常情况下,所有d.ts
和一个大.js
文件进入使用库使用项目的dist
文件夹中。那么是否有人知道从哪里可以生成这些JavaScript文件,以及是否确实需要这些文件,因为所有这些代码已经存在,可以在dist文件夹中说。
奖金问题
不与上述一样重要,所有的测试结果被显示在终端,而浏览器仅显示:
噶V1.4.1 - 连接 铬61.0。 3163(Mac OS X 10.12.6)空闲
那么是否有一个很好的修复方法来显示我的测试,就像angular-cli
开箱即用?
注意在做完作业后,我没有发现网上有相关的东西,我也不想上传一堆不愉快的jsons。如果有人对这个问题的方向有一个想法,我会很乐意包含代码。 karma.config.js
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine', 'karma-typescript'],
files: [
'init-test-bed.spec.ts',
'src/**/*.ts'
],
exclude: [
],
preprocessors: {
'**/*.ts': ['karma-typescript']
},
karmaTypescriptConfig: {
bundlerOptions: {
entrypoints: /\.spec\.ts$/,
transforms: [
require('karma-typescript-angular2-transform')
]
},
compilerOptions: {
lib: ['ES2015', 'DOM']
}
},
reporters: ['progress', 'karma-typescript'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
}
tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"experimentalDecorators": true,
"moduleResolution": "node",
"rootDir": "./src",
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2015",
"dom"
],
"skipLibCheck": true,
"types": [
"jasmine",
"node"
]
}
}
最后test
运行该脚本
被this
编辑生成我的图书馆的基本结构
"test": "tsc && karma start"
由于您的打字稿配置,您正在为每个.ts文件获取.js
文件。您可以在tsconfig.json
中更改您的配置以告知编译器写入单个文件或在文件夹中并在其中添加所有脚本。
"outDir": "../out-tsc/spec"
- >会将所有输出javascript文件添加到一个文件夹中。
对于第二个问题,当内部运行karma时,它运行webdriver
并连接到浏览器。这就是您看到localhost:9876
或类似网址在右侧打开调试按钮的原因。
当webdriver运行时,您还可以调试浏览器中的任何错误情况等等。
因此,''outDir“:”../ out-tsc/spec“'。代替''rootDir“:”./src“,解决了我的主要问题。 :) 尽管如此,我的第二个问题仍然存在(我想,如果我研究'webdriver'有点可能会解决),除了我提到的原始问题之外,为什么浏览器不显示任何内容。无论如何,非常感谢您的明确答案,并且非常详细。 – Thodoris
点击调试按钮,它将打开一个带有调试的新标签。然后转到开发人员模式并找到一个文件并放置一个断点和刷新页面。所以当你的测试用例达到这一点时,它会暂停执行,你可以调试。这是基本的,它也有其他的设施 –
你使用角度cli吗?你能分享你的业力配置文件吗?并且当你运行'npm test'时,在你的package.json文件中执行的命令是什么 –
@AirirDhaDas我使用角度cli来运行库的应用程序,而不是库。对于文件看看我的编辑。 – Thodoris
看到我的回答,你没有使用'@ angular/cli'框架,所有'ts'文件都是单独编译的。所以在你的tsconfig.josn中加入'outDir':“../ out-tsc/spec”应该把所有的ts文件编译成js文件并把它加入到一个文件夹中,你也可以放入一个文件。在google中搜索该选项 –