Angular CLI /使用ng测试运行两类测试

时间:2018-04-20 09:11:06

标签: angular angular-cli

我有两种不同类型的测试:

  • 单元测试(标准角度cli .spec.ts 文件)
  • 功能测试(我的特定 .func.spec.ts 文件,与.spec.ts文件的工作方式相同,但没有模拟并在我的数据库中注入数据,因此无需运行它们所有的时间)

我想:

  • ng test命令中排除.func.spec.ts文件,仅运行 .spec.ts 测试文件
  • 调用test命令仅运行 .func.spec.ts

因此,我的功能测试不会在常规ng test上下文中执行,可以单独运行。

换句话说,解决方案可以是......

  • npm run test运行.spec.ts文件
  • npm run test:func运行.func.spec.ts文件

我尝试创建一个不同的业力配置文件,排除我不想要的文件,但它不起作用。

你知道如何执行此操作吗?

1 个答案:

答案 0 :(得分:0)

您可以做的是添加特定的Karama配置karma.func.conf.js

 #!/bin/bash
 DATE=20180420
 MONTH=`expr ${DATE:4:2}` 
 # or MONTH=$(expr ${DATE:4:2}) 
 echo MONTH=$MON

添加到您的package.json

module.exports = function (config) {
  config.set({
    basePath: '',
    files: ['src/app/**/**.func.ts'] // Not 100% sure about the pattern
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular/cli/plugins/karma')
    ],
    client:{
      clearContext: false
    },
    coverageIstanbulReporter: {
      reports: [ 'html', 'lcovonly' ],
      fixWebpackSourcePaths: true
    },
    angularCli: {
      environment: 'dev' //you could change to use prod
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

也许有另一种解决方案可以避免维护两个配置文件。