Jasmine:"Incomplete: No specs found" 在 Angular Typescript 项目中
Jasmine: "Incomplete: No specs found" in Angular Typescript project
出于某种我无法理解的原因,Karma 说 Jasmine 找不到我的任何测试规范。我正在使用 Angular 9、Typescript 和 ng test
来 运行 测试。我还 运行 jasmine init
来创建 jasmine.json 配置文件。我已经尝试了几个配置更改,创建了一个虚拟测试 javascript 文件等等,但我仍然收到相同的 "No specs found" 消息。这真是令人沮丧,我确定我只是忽略了这里明显的东西。
测试文件夹结构:
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,
});
};
解决了。一旦我将 .spec 文件移动到 /src 文件夹中,Jasmine 就可以毫无问题地检测到它们。
我有同样的问题,但在我的情况下,我从 angular 9 升级到 angular 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' 中,我将箭头函数更改为常规函数,因为箭头函数没有它自己的 'this'
*
Unlike regular functions, arrow functions do not have their own this .
The value of this inside an arrow function remains the same throughout
the lifecycle of the function and is always bound to the value of this
in the closest non-arrow parent function.
希望这可以帮助到你们中的某个人并节省你们一些时间
我今天遇到了这个错误,对我来说这是我的 .ts
文件中的语法级错误,所以它们无法真正编译。
在上述情况下,我认为测试不应该开始(而是显示编译错误)。
但无论出于何种原因,测试以某种方式开始,并且 Jasmine
失败并显示“No specs found
”日志。
将 .spec 文件移动到 /spec 目录后,它找到了测试。
在我的例子中,当我 运行 ng 测试时,我在终端中看到了一些错误,但是当浏览器打开时,它显示没有找到规范。
项目出错
这是错误。修复上述错误后,它显示了所有规格以及执行测试用例的结果
出于某种我无法理解的原因,Karma 说 Jasmine 找不到我的任何测试规范。我正在使用 Angular 9、Typescript 和 ng test
来 运行 测试。我还 运行 jasmine init
来创建 jasmine.json 配置文件。我已经尝试了几个配置更改,创建了一个虚拟测试 javascript 文件等等,但我仍然收到相同的 "No specs found" 消息。这真是令人沮丧,我确定我只是忽略了这里明显的东西。
测试文件夹结构:
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,
});
};
解决了。一旦我将 .spec 文件移动到 /src 文件夹中,Jasmine 就可以毫无问题地检测到它们。
我有同样的问题,但在我的情况下,我从 angular 9 升级到 angular 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' 中,我将箭头函数更改为常规函数,因为箭头函数没有它自己的 'this'
*
Unlike regular functions, arrow functions do not have their own this . The value of this inside an arrow function remains the same throughout the lifecycle of the function and is always bound to the value of this in the closest non-arrow parent function.
希望这可以帮助到你们中的某个人并节省你们一些时间
我今天遇到了这个错误,对我来说这是我的 .ts
文件中的语法级错误,所以它们无法真正编译。
在上述情况下,我认为测试不应该开始(而是显示编译错误)。
但无论出于何种原因,测试以某种方式开始,并且 Jasmine
失败并显示“No specs found
”日志。
将 .spec 文件移动到 /spec 目录后,它找到了测试。
在我的例子中,当我 运行 ng 测试时,我在终端中看到了一些错误,但是当浏览器打开时,它显示没有找到规范。
项目出错
这是错误。修复上述错误后,它显示了所有规格以及执行测试用例的结果