3
Angluar2モデルにバインドされた入力ボックスをテストできないようです。私はこれに少し新しいので、私と一緒に裸をしてください。Angular 2テスト入力ボックスバインディング
私はモデルに結合された入力ボックスを含む非常に基本的なAngular2コンポーネントを持っています。
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'sc-search',
templateUrl: 'search.component.html'
})
export class SearchComponent {
@Input() data: any;
@Output() onSearchTermChanged = new EventEmitter<string>();
private searchTerm: string;
search() {
this.onSearchTermChanged.emit(this.searchTerm);
}
}
次のテストを実行している同じ「ジョン」に未定義の期待得続ける:
<form>
<input type="text" [(ngModel)]="searchTerm" name="termsearchTerm" (keyup)="search()" value=""/>
</form>
は、ここでの背後にあるコードです。 私はテストに合格すると期待しています。
searchableHierarchyComponentFixture.detectChanges();
let termInputDbg = searchableHierarchyComponentFixture.debugElement.query(By.css('input[name="termsearchTerm"]'));
let input = searchableHierarchyComponentFixture.nativeElement.querySelector('input');
input.value = 'John';
let evt = document.createEvent('Event');
evt.initEvent('keyup', true, false);
termInputDbg.triggerEventHandler('keyup', null);
input.dispatchEvent(evt);
tick(50);
searchableHierarchyComponentFixture.detectChanges();
searchableHierarchyComponentFixture.whenStable();
expect(searchableHierarchyComponentFixture.componentInstance.searchTerm).toEqual('John');
すばらしい答え。ありがとうございました! –
'tick()'と 'input.dispatchEvent'トリックが私の命を救った! – elli0t
ねえ、回答と質問自体のように。ここでダニ関数は何ですか?私は今、同じ状況にあります。入力にバインドされたngModelをテストする必要があります。そのティック()が必要ですか? –