我正在使用带有弹簧引导的 Angular CLI + Angular 2.我的应用程序按预期运行,没有问题.但问题是我是



我正在使用带有弹簧引导的Angular CLI + Angular 2。我的应用程序按预期运行,没有问题。

但问题是,如果我运行ng test,我会收到以下异常:

Could not start watchman; falling back to NodeWatcher for file system events. Visit http://ember-cli.com/user-guide/#watchman for more info. Built project successfully.

Stored in "dist". Build successful - 1128ms.
07 07 2016 17:25:14.398:WARN [karma]: No captured browser, open http://localhost:9876/  
07 07 2016 17:25:14.418:INFO [karma]: Karma v0.13.22 server started at 
07 07 2016 17:25:14.423:INFO [launcher]: Starting browser Chrome 07 07 2016 17:25:16.514:
INFO [Chrome 51.0.2704 (Mac OS X 10.11.5)]: Connected on socket /#0TaliUxVtqlcFROBAAAA with id 93440436 
Chrome 51.0.2704 (Mac OS X 10.11.5) AccountSummary Service should ... FAILED
Error: No provider for Http! (AccountSummaryService -> Http)    

错误:DI 异常'

因为,angular-CLI 创建了没有注入 Http 模块的默认 account-summary-service.spec 文件。

如果注释掉以下代码:

  // beforeEachProviders(() => [AccountSummaryService]);
  //
  // it('should ...',
  //     inject([AccountSummaryService], (service: AccountSummaryService) => {
  //   expect(service).toBeTruthy();
  // }));

不会有错误。

在测试中也注入 Http 服务。此服务的测试如下所示:

describe('AccountSummaryService Service', () => {
  let accountSummaryService: AccountSummaryService;
  let mockBackend: MockBackend;
  const mockHttpProvider = {
    deps: [MockBackend, BaseRequestOptions],
    useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
      return new Http(backend, defaultOptions);
    }
  }
  beforeEachProviders(() => [
    MockBackend,
    BaseRequestOptions,
    provide(Http, mockHttpProvider),
    AccountSummaryService
  ]);
  beforeEach(inject([AccountSummaryService, MockBackend], (a, m) => {
    accountSummaryService = a;
    mockBackend = m;
  }));
  it('should ...', async(() => {
      expect(accountSummaryService).toBeTruthy();
  }));
});

相关内容

最新更新