茉莉花:“不完整:找不到规格”在Angular Typescript项目中

时间:2019-12-06 12:40:43

标签: angular typescript testing jasmine karma-runner

出于某种原因,我不明白,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,
    });
};

5 个答案:

答案 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)

就我而言,当我运行 ng test 时,我在终端中看到了一些错误,但是当浏览器打开时,它显示没有找到任何规格。

项目错误

enter image description here

这是错误,因为我在此之后修复了此错误,它显示了所有规范以及执行的测试用例的结果