2017-05-31 13 views
4

私はAngular2アプリケーションのテストをしようとしています。私はまだモッキングサービスを作っていないので、私は通常のサービスを利用しようとしています。ng test Http!のプロバイダはありません!エラー

正確なエラー:

Error: No provider for Http! 
    at injectionError (http://localhost:9876/base/src/test.ts:1538:86) [angular] 
    at noProviderError (http://localhost:9876/base/src/test.ts:1576:12) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._throwOrNull (http://localhost:9876/base/src/test.ts:3077:19) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._getByKeyDefault (http://localhost:9876/base/src/test.ts:3116:25) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._getByKey (http://localhost:9876/base/src/test.ts:3048:25) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_.get (http://localhost:9876/base/src/test.ts:2917:21) [angular] 
    at DynamicTestModuleInjector.Array.concat.NgModuleInjector.get (http://localhost:9876/base/src/test.ts:3864:52) [angular] 

Iテストするコンポーネントの@Componentである:

@Component({ 
    selector: 'app-game-board', 
    templateUrl: './game-board.component.html', 
    styleUrls: ['./game-board.component.css'], 
    providers: [GameBoardService] 
}) 

Iは、spec.tsクラス(試験)にHttpModuleをインポートしようとしました私はそれを働かせることはできません。ここで私はまた、テストクラスのプロバイダでこれを試してみました

import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { HttpModule } from '@angular/http'; 
import { GameBoardComponent } from './game-board.component'; 
import { GameBoardService } from "app/services/gameboardservice"; 

describe('GameBoardComponent',() => { 
    let component: GameBoardComponent; 
    let fixture: ComponentFixture<GameBoardComponent>; 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     imports: [HttpModule], //this is where I try to import the HttpModule 
     declarations: [ GameBoardComponent ], 
     providers: [GameBoardService] 
    }) 
    .compileComponents(); 
    })); 

    beforeEach(() => { 
    fixture = TestBed.createComponent(GameBoardComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    }); 

    it('should create',() => { 
    expect(component).toBeTruthy(); 
    }); 
}); 

spec.tsのコードです:あなたはまだあなたのテストクラスにHTTPを提供する必要があります

providers: [{ provide: Http, useValue: GameBoardService }] 

答えて

7

は、あなたそのためにMockBackendを使用したいと思うでしょう。

これはあなたが追加する必要がある行です。あなたのTestBed.configureTestingModuleのあなたのプロバイダ内

import { MockBackend } from '@angular/http/testing'; 
import { HttpClient } from '@angular/common/http'; 

providers: [ 
    {provide: HttpClient, deps: [MockBackend]}, 
    ... 
], 
+0

うん!働いた。 MockBackend https://angular.io/api/http/testing/MockBackendのいくつかのドキュメントとサンプルについては、こちらをご覧ください –

関連する問題