【问题标题】:Karma is not finding my spec.ts file testsKarma 没有找到我的 spec.ts 文件测试
【发布时间】:2019-01-18 23:47:00
【问题描述】:

我有以下基于thiskarma.config.js

module.exports = function (config) {
  config.set({
    basePath: '',
    files: ['**/*spec.ts'],
    frameworks: ['jasmine'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter')
    ],
    client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, '../coverage'),
      reports: ['html', 'lcovonly'],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

我不明白为什么报告说执行了 0 次测试。我确定我的 src 文件夹中有一些文件扩展名为 spec.ts

Chrome 68.0.3440 (Windows 10.0.0):执行 0 of 0 错误(0.079 秒/0 秒)

有人知道可能是什么问题吗?

【问题讨论】:

    标签: angular typescript karma-runner


    【解决方案1】:

    如果您确定路径中有 spec.ts 文件,这是我看到的 karma.config 和我的唯一区别:

    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')
    ],
    

    不过,在我查看此问题之前,我根本没有 files:,因此您也可以尝试将其删除。

    【讨论】:

      【解决方案2】:

      您需要检查 src/test.ts 中的路径。这是我的代码。

      // Then we find all the tests.
      const context = require.context('./', true, /\.spec\.ts$/);
      // And load the modules.
      context.keys().map(context);
      // Finally, start Karma to run the tests.
      __karma__.start();
      

      【讨论】:

      • 我没有这个文件 file :S
      • 你需要有这个文件。否则它将无法正常工作。你的角度版本是多少?
      • Angular CLI:6.0.8 节点:8.11.1 操作系统:win32 x64 Angular:5.2.11
      • 在 angular.json 中,'test' 配置将包含应该指向 'src/test.ts' 的 'main' 选项。在你的情况下?
      • 创建一个新的 Angular 6 项目并尝试对其进行比较。您只能合并业力相关的文件。它应该解决问题
      【解决方案3】:

      this 答案的上下文中,我意识到我的项目中没有以下文件:

      1. test.ts
      2. polyfills.ts
      3. angular.json

      我没有提前意识到,因为这是一个安装在另一个项目上的项目。这意味着我从来不需要将这个项目作为一个独立的应用程序运行。

      为了解决这个问题,我所做的是:

      1. 通过运行命令ng new my-app创建一个新的角度项目
      2. 检查我的项目中不存在的配置文件(与创建的这个新项目相比)
      3. 将此文件导入到与新建项目的文件相同的相对路径。
      4. 运行项目并检查可能出现的新错误。

      【讨论】:

        【解决方案4】:

        这发生在我的单元测试中,实际上是我的单元测试之一

        从 '@angular/compiler/src/core' 导入 { NO_ERRORS_SCHEMA };

        我替换为

        从“@angular/core”导入 { NO_ERRORS_SCHEMA };

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-17
          • 1970-01-01
          • 2013-08-24
          • 1970-01-01
          • 2018-04-16
          • 1970-01-01
          • 2019-06-17
          相关资源
          最近更新 更多