代码之家  ›  专栏  ›  技术社区  ›  firasKoubaa

角度6单元测试:如何使用test.ts运行karma测试

  •  0
  • firasKoubaa  · 技术社区  · 6 年前

    在我的下面 角度6 应用程序,我有这个配置

    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
        },
        mime: {
          'text/x-typescript': ['ts','tsx']
        },
        coverageIstanbulReporter: {
          dir: require('path').join(__dirname, 'coverage'),
          reports: [ 'html', 'lcovonly' ],
          fixWebpackSourcePaths: true
        },
    
        reporters: config.angularCli && config.angularCli.codeCoverage
          ? ['progress', 'coverage-istanbul']
          : ['progress', 'kjhtml'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Chrome'],
        browserDisconnectTimeout: 10000,
        browserDisconnectTolerance: 3,
        browserNoActivityTimeout: 60000,
        flags: [
          '--disable-web-security',
          '--disable-gpu',
          '--no-sandbox'
        ],
        singleRun: true,
        concurrency: Infinity
      });
    };
    

    有一个文件test.ts;配置测试运行:

    // This file is required by karma.conf.js and loads recursively all the .spec and framework files
    
    import 'zone.js/dist/long-stack-trace-zone';
    import 'zone.js/dist/proxy.js';
    import 'zone.js/dist/sync-test';
    import 'zone.js/dist/jasmine-patch';
    import 'zone.js/dist/async-test';
    import 'zone.js/dist/fake-async-test';
    import { getTestBed } from '@angular/core/testing';
    import {
      BrowserDynamicTestingModule,
      platformBrowserDynamicTesting
    } from '@angular/platform-browser-dynamic/testing';
    
    // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
    declare var __karma__: any;
    declare var require: any;
    
    // Prevent Karma from running prematurely.
    __karma__.loaded = function () {};
    
    // First, initialize the Angular testing environment.
    getTestBed().initTestEnvironment(
      BrowserDynamicTestingModule,
      platformBrowserDynamicTesting()
    );
    // Then we find all the tests.
    const context = require.context('./', true, /my-component.component.spec.ts/);
    // And load the modules.
    context.keys().map(context);
    // Finally, start Karma to run the tests.
    __karma__.start();
    

    我可以让我过滤要测试的文件

    例如,我想运行这个: my-component.component.spec.ts

    但是它没有运行,而且在 因果报应.conf 运行

    建议?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sanu0786 Saranya Kumaran    6 年前

    更改此行

    const context = require.context('./', true, /my-component.component.spec.ts/);
    

    用这个

    const context = require.context('./', true, /my-component\.component\.spec\.ts$/);
    

    '.'