Angular CLI:使用业力

时间:2016-08-21 21:20:55

标签: angular typescript karma-runner karma-jasmine angular-cli

我在TypeScript中使用Angular 2。我使用Angular CLI工具创建了这个项目,并尝试使用命令 - “karma start”运行里面的测试用例 - “app.component.spec.ts”。此测试用例由Angular CLI本身生成,并且没有变化。 当我运行测试用例时,它会给我以下错误 -

C:\Projects\Angular2\TestProject>karma start
21 08 2016 16:18:34.167:WARN [karma]: No captured browser, open http://localhost:9876/
21 08 2016 16:18:34.178:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
21 08 2016 16:18:34.205:INFO [launcher]: Starting browser Chrome
21 08 2016 16:18:36.677:INFO [Chrome 52.0.2743 (Windows 7 0.0.0)]: Connected on socket /#u3qiejjLaOGa5HdGAAAA with id 54026183
Chrome 52.0.2743 (Windows 7 0.0.0) ERROR
  Uncaught SyntaxError: Unexpected token import
  at C:/Projects/Angular2/TestProject/src/app/app.component.spec.ts:5

有人可以帮助您解决此问题。

app.component.spec.ts -

/* tslint:disable:no-unused-variable */
/// <reference path="../../typings/globals/jasmine/index.d.ts" />

import { addProviders, async, inject } from '@angular/core/testing';
import { AppComponent } from './app.component';

describe('App: TestProject', () => {
  beforeEach(() => {
    addProviders([AppComponent]);
  });

  it('should create the app',
    inject([AppComponent], (app: AppComponent) => {
      expect(app).toBeTruthy(); 
    }));

  it('should have as title \'app works!\'',
    inject([AppComponent], (app: AppComponent) => {
      expect(app.title).toEqual('Test Project Title');
    }));
});

2 个答案:

答案 0 :(得分:2)

我有同样的错误。我的问题是我的.ts目录中的所有spec文件都没有被angular-cli正确检测到。我在karma.conf.js中遇到了一些配置问题。我更改了以下内容:

files: [
  { pattern: './web/spec/test.ts', watched: false }
],
preprocessors: {
  './invalid-path/to/test.ts': ['angular-cli']
},

files: [
  { pattern: './web/spec/test.ts', watched: false }
],
preprocessors: {
  './web/spec/test.ts': ['angular-cli']
},

之后导入被正确解释,.ts文件可以使用ng test再次编译而不会出错。

答案 1 :(得分:-2)

要在Karma中运行typescript测试,您需要一个像karma-typescript-preprocessor

这样的预处理器

或者您可以使用已编译的'js'测试文件运行测试