因果报应可以';在angular cli应用程序中找不到我的测试

因果报应可以';在angular cli应用程序中找不到我的测试,angular,testing,jasmine,karma-runner,Angular,Testing,Jasmine,Karma Runner,我有一个使用CLI生成的Angular 4项目,我正在尝试使测试工作正常。我的项目根目录中有Karma.conf: module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine', 'angular-cli'], plugins: [ require('karma-jasmine'), require('karma-chrome-lau

我有一个使用CLI生成的Angular 4项目,我正在尝试使测试工作正常。我的项目根目录中有Karma.conf:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', 'angular-cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-remap-istanbul'),
      require('angular-cli/plugins/karma')
    ],
    files: [
      { pattern: './src/test.ts', watched: false }
    ],
    preprocessors: {
      './src/test.ts': ['angular-cli']
    },
    mime: {
      'text/x-typescript': ['ts','tsx']
    },
    remapIstanbulReporter: {
      reports: {
        html: 'coverage',
        lcovonly: './coverage/coverage.lcov'
      }
    },
    angularCli: {
      config: './angular-cli.json',
      environment: 'dev'
    },
    reporters: config.angularCli && config.angularCli.codeCoverage
              ? ['progress', 'karma-remap-istanbul']
              : ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};
这是我的test.ts,位于我的src文件夹中:

declare var __karma__: any;
declare var require: any;

__karma__.loaded = function () {};

getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
const context = require.context('./', true, /\.spec\.ts$/);
context.keys().map(context);
__karma__.start();
我的文件夹结构是:

    +---app
|   +---class
|   +---components
|   +---services
|   \---templates
+---assets
|   \---images
\---environments
因此,在我的组件中,我创建了一个名为
feeds.component.spec.ts
的测试,该测试与名为
feeds.component.ts
的组件相关联

我的windows控制台的输出如下:

Unable to find "@angular/cli" in devDependencies.

The package "angular-cli" has been deprecated and renamed to "@angular/cli".

Please take the following steps to avoid issues:
"npm uninstall --save-dev angular-cli"
"npm install --save-dev @angular/cli@latest"

08 05 2017 08:33:12.674:WARN [karma]: No captured browser, open http://localhost
:9876/
08 05 2017 08:33:12.687:INFO [karma]: Karma v1.2.0 server started at http://loca
lhost:9876/
08 05 2017 08:33:12.688:INFO [launcher]: Launching browser Chrome with unlimited
 concurrency
08 05 2017 08:33:12.897:INFO [launcher]: Starting browser Chrome
08 05 2017 08:33:17.033:INFO [Chrome 58.0.3029 (Windows 10 0.0.0)]: Connected on
 socket /#tif1xw_35N5kuco6ACBA with id 3123123
Uncaught SyntaxError: Unexpected token import
at src/app/components/feeds.component.spec.ts:1
karma调试控制台只输出
跳过了0个测试
,因此没有启动任何测试

奇怪的是,我可以启动位于我的
模板
文件夹中的默认测试:
app.component.spec.ts

Chrome 58.0.3029 (Windows 10 0.0.0): Executed 3 of 3 (3 FAILED) (0 secs / 0.159
Chrome 58.0.3029 (Windows 10 0.0.0): Executed 3 of 3 (3 FAILED) ERROR (0.536 sec
s / 0.159 secs)
我还尝试在我的
karma.conf.js
中通过注释test.ts模式和硬编码我的组件来“强制”测试:

files: [
  //{ pattern: './src/test.ts', watched: false },
  { pattern: 'app/components/feeds.component.spec.ts', included: true, watched:false }
],
但这会产生以下结果:

Unable to find "@angular/cli" in devDependencies.

The package "angular-cli" has been deprecated and renamed to "@angular/cli".

Please take the following steps to avoid issues:
"npm uninstall --save-dev angular-cli"
"npm install --save-dev @angular/cli@latest"

08 05 2017 08:33:12.674:WARN [karma]: No captured browser, open http://localhost
:9876/
08 05 2017 08:33:12.687:INFO [karma]: Karma v1.2.0 server started at http://loca
lhost:9876/
08 05 2017 08:33:12.688:INFO [launcher]: Launching browser Chrome with unlimited
 concurrency
08 05 2017 08:33:12.897:INFO [launcher]: Starting browser Chrome
08 05 2017 08:33:17.033:INFO [Chrome 58.0.3029 (Windows 10 0.0.0)]: Connected on
 socket /#tif1xw_35N5kuco6ACBA with id 3123123
Uncaught SyntaxError: Unexpected token import
at src/app/components/feeds.component.spec.ts:1

为什么我的
组件
测试没有启动?

请采取以下步骤以避免出现问题:

npm uninstall --save-dev angular-cli npm clean npm install --save-dev @angular/cli@latest npm卸载--保存开发工具 npm清洁 npm安装--保存dev@angular/cli@latest
您还应该在全球范围内执行此操作。

对于npm 5,我通过以下方式解决了此问题:

  • 删除
    包锁.json
  • 运行
    npm缓存清理--force
  • package.json
    中删除任何不必要的依赖项(我有@ngtools)
  • 再次使用并运行
    npm i
    更新其余依赖项

我确实在typescript 2.4.x之后遇到了一些问题,并恢复到了2.3.4,但这可能会在几天内得到解决;现在值得一提。

这里也有同样的问题,有解决方案吗?