Unit testing karma测试用例运行多次:角度单元测试

Unit testing karma测试用例运行多次:角度单元测试,unit-testing,jasmine,karma-jasmine,package.json,angular-unit-test,Unit Testing,Jasmine,Karma Jasmine,Package.json,Angular Unit Test,我无法理解为什么在一个固定的测试用例之后,我的karma测试用例会重新运行多次 已断开连接,因为50000毫秒内没有消息。 Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接中的131个(1分钟9.028秒/18.285秒) Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接(47.273秒/18.169秒)中的131个 Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接中的131个(1分

我无法理解为什么在一个固定的测试用例之后,我的karma测试用例会重新运行多次

已断开连接,因为50000毫秒内没有消息。 Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接中的131个(1分钟9.028秒/18.285秒)

Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接(47.273秒/18.169秒)中的131个

Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接中的131个(1分钟9.028秒/18.285秒)

Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接(47.273秒/18.169秒)中的131个

Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接(22.07秒/19.87秒)中的97个

Chrome 75.0.3770(Windows 10.0.0):执行251个断开连接中的131个(1分钟9.028秒/18.285秒)

Chrome 75.0.3770(Windows 10.0.0):251次成功中的131次执行(0秒/17.406秒)

Chrome 75.0.3770(Windows 10.0.0):成功执行251次中的239次(0秒/20.912秒)

下面是karma.conf.js的配置

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

const { join } = require('path');
const { constants } = require('karma');

module.exports = () => {
  return {
    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
      jasmine: {
        random: false
      }
    },
    coverageIstanbulReporter: {
      dir: join(__dirname, '../../coverage'),
      reports: ['html', 'lcovonly'],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: constants.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: true,
  };
};
当我将singleRun更改为false并使用ng test执行测试用例时,它工作得很好,问题只是当我将其更改为true时

我看了几篇博客,试图通过添加更多的配置来解决这个问题,比如

       browserNoActivityTimeout: 50000,
        captureTimeout: 60 * 1000,
        // captureTimeout: 210000,
        browserDisconnectTolerance: 1,
        // browserDisconnectTimeout: 210000,
        // browserNoActivityTimeout: 210000
但对我来说什么都不管用

下面是devdependences中的配置(我使用的是angular cli版本8)


请建议

我通过监视内部设置了
location.href
的函数,解决了上述问题


location.href
导致页面加载了不同的URL,因此karma一次又一次地运行。

非常感谢,这正是我遇到的问题。
 "devDependencies": {
    "@angular-devkit/build-angular": "0.800.3",
    "@angular-devkit/build-ng-packagr": "0.800.3",
    "@angular/cli": "^8.0.3",
    "@angular/compiler-cli": "~8.0.0",
    "@angular/language-service": "^6.1.0",
    "@ngrx/store-devtools": "6.0.1",
    "@nrwl/schematics": "~8.0.0",
    "@ruf/schematics": "next",
    "@ruf/wrench": "next",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^8.10.10",
    "codelyzer": "5.1.0",
    "dotenv": "6.2.0",
    "jasmine-core": "~3.4.0",
    "jasmine-marbles": "0.3.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.5",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "~1.4.2",
    "ngrx-store-freeze": "0.2.4",
    "prettier": "1.16.4",
    "protractor": "~5.3.0",
    "scss-bundle": "^2.1.2",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.4.5",
    "istanbul-instrumenter-loader": "^3.0.1",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^3.0.4",
    "source-map-loader": "^0.2.4"
  }