出于某种原因,我不明白,Karma说Jasmine找不到我的任何测试规格。我正在使用Angular 9,Typescript和ng test
来运行测试。我还运行了jasmine init
以创建jasmine.json配置文件。我尝试了几次配置更改,创建了一个虚拟测试javascript文件等等,但仍然收到相同的“未找到规格”消息。这真令人沮丧,我敢肯定,我只是在这里忽略了一些明显的东西。
测试文件夹结构:
spec
services
address.service.spec.ts
login.service.spec.ts
...
support
jasmine.json
jasmine.json:
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js", // tried with "**/*[sS]pec.ts"
"services/*[sS]pec.js" // tried with "services/*[sS]pec.ts"
],
"helpers": [
"helpers/**/*.js" // tried with "helpers/**/*.ts"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
karma.conf.js:
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(
__dirname,
'./coverage/censored',
),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true,
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true,
});
};
答案 0 :(得分:1)
我今天遇到了错误,对我来说是我的 .ts 文件中有错误,所以它无法真正编译。通常我认为它也不会开始测试。但在这种情况下,测试开始了,但出现了这个错误。
答案 1 :(得分:0)
解决了。将.spec文件移动到/ src文件夹中后,Jasmine可以毫无问题地检测到它们。
答案 2 :(得分:0)
我遇到了同样的问题,但就我而言,我从9号角升级到10号角,并且测试停止运行,我得到了很多:
src/app/xxxxx/basic-info/basic-info.component.spec.ts:391:9 - error TS2532: Object is possibly 'undefined'.
391 this.whatToDelete = ["mumbo", "jumbo"];
所以在'describe'中,我将arrow函数更改为常规函数,因为arrow函数没有自己的'this'
*
与常规函数不同,箭头函数没有自己的this。 箭头函数中的this的值在整个过程中保持不变 函数的生命周期,并且始终绑定到此函数的值 在最接近的非箭头父函数中。
希望这可以帮助您其中的一个并节省一些时间
答案 3 :(得分:0)
一旦我将 .spec 文件移动到 /spec 目录中,它就会找到测试。
答案 4 :(得分:0)