2016-07-07 3 views
2

Я использую Angular CLI + Angular 2 с пружинным ботинком. Мое приложение работает как ожидалось, не имея проблемы.Я использую Angular CLI + Angular 2 с пружинным ботинком. мое приложение работает, как ожидалось, без проблем. но проблема в том, что я запускаю ng test

Butthe вопрос, если я бегу 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 Exception`

+0

с ошибкой 'FAILED Ошибка: Нет провайдера для Http! (AccountSummaryService -> Http) ' попробуйте' import {HTTP_PROVIDERS} из '@ angular/http'; самозагрузки (AppComponent, [HTTP_PROVIDERS]); ' в вашем main.ts –

+0

Может ли вы принять в качестве правильного ответа или если есть какой-то смысл вопроса, что я не закрывал, позвольте мне сейчас. –

ответ

1

Так, угловой CLI создает по умолчанию учетной записи-резюме -service.spec, который не имеет инъекции модуля Http.

Если закомментировать следующий код:

// 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(); 
    })); 
});