2017-01-27 14 views
1

には影響しません、私はangular2テストを通じてDOM入力要素を設定しようとしている。:angular2テスト - 入力テキストの変更がngmodel

は、ここでHTMLコードです:ここで

<div> 
      <label for="Player X">Player X</label> 
      <input type="text" id="playerX" required [(ngModel)]="players[0].id" name="playerXid"> 
     </div> 
     <div> 
      <label for="Player O">Player O</label> 
      <input type="text" id="playerO" required [(ngModel)]="players[1].id" name="playerOid"> 
     </div> 

ですplayers[0].idplayers[1].idが空であるため、失敗したテストコードは、:

it('Test input <-> player bindings',() => { 
     fixture.detectChanges(); 

     let playerX = fixture.debugElement.nativeElement.querySelector('#playerX'); 
     playerX.value = 'First'; 
     playerX.dispatchEvent(new Event('input')); 
     let playerO = fixture.debugElement.nativeElement.querySelector('#playerO'); 
     playerO.value = 'Second'; 
     playerO.dispatchEvent(new Event('input')); 

     fixture.detectChanges(); 

     expect(comp.players[0].id).toBe('First'); 
     expect(comp.players[1].id).toBe('Second'); 
    }); 

私はここで何をしないのですか?私は、入力値が更新されますないことに気付きました

UPDATE

。 問題はcomp.playersではありません。

答えて

0

これを試してみてください:

let compiled = fixture.debugElement.nativeElement; 
let playerX = compiled.querySelector('#playerX'); 
let player0 = compiled.querySelector('#playerX'); 

fixture.detectChanges(); 

// Change value 
playerX.value = 'First'; 
player0.value = 'Second'; 

// dispatch input event 
dispatchEvent(playerX, 'input'); 
dispatchEvent(player0, 'input'); 

+0

は、dispatchEventをパラメータとして、イベントの種類を取得する必要...私に教えてください: は、dispatchEvent(EVT:イベント):ブール値 – ohadinho

関連する問題