が定義されていない私は、サービスを使用するコンポーネント(GamePanelComponent
)をテストしようとしています:GamePanelComponent.ts
内部 :Angular2テスト - 注入されたサービスのメソッドが
constructor(private playerService: PlayersService, private leaderBoardService: LeaderBoardService) { }
comp.IsValidMove
ある選手はgetPlayers
方法にサービスを提供使用しますが、残念ながら私はこのエラーが発生しています:TypeError: Cannot read property 'getPlayers' of undefined
ここは、Angular2テストチュートリアルに従って書かれた私のテストファイルです。あなたは、私は(それが元のサービスのインスタンスだから)getPlayers()
メソッドを持ってスタブを注入DO見ることができるように:
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { GamePanelComponent } from './gamepanel.component';
import { GamePanelOutputComponent } from '../gamepaneloutput/gamepaneloutput.component';
import { PlayersService } from '../../services/players/players.service';
import { LeaderBoardService } from '../../services/leaderboard/leaderboard.service';
import { Player } from '../../models/player/player';
describe('GamePanelComponent (inline template)',() => {
let comp: GamePanelComponent;
let fixture: ComponentFixture<GamePanelComponent>;
let playersService, playersServiceStub, componentPlayersService : PlayersService;
beforeEach(async (() => {
this.playersServiceStub = new PlayersService();
this.playersServiceStub.players = [];
this.playersServiceStub.players[0] = new Player('','X');
this.playersServiceStub.players[1] = new Player('','O');
TestBed.configureTestingModule({
declarations: [ GamePanelComponent, GamePanelOutputComponent ], // declare the test component
providers: [ { provide: PlayersService, useValue: playersServiceStub }, { provide: LeaderBoardService } ]
}).compileComponents()
.then(() => {
fixture = TestBed.createComponent(GamePanelComponent);
comp = fixture.componentInstance;
// PlayerService actually injected into the component
playersService = fixture.debugElement.injector.get(PlayersService);
componentPlayersService = playersService;
// PlayersService from the root injector
playersService = TestBed.get(PlayersService);
});
}));
it('isValidMove',() => {
comp.ngOnInit();
comp.game.board[0][0] = 'X';
let isValid = comp.isValidMove(0,0);
expect(isValid).toBe(false);
});
});