我想在Angular 2單元測試中更改輸入字段的值。從Angular 2測試中更新輸入html字段
<input type="text" class="form-control" [(ngModel)]="abc.value" />
我不能只是改變ngModel
因爲abc
對象是私有的:
private abc: Abc = new Abc();
在角2的測試,我可以模擬用戶輸入到輸入字段,以便ngModel
將被更新用戶在單元測試中鍵入的內容?
我可以抓住輸入欄的DebugElement
和nativeElement
沒有問題。 (只需在輸入字段的nativeElement
上設置value
屬性似乎不起作用,因爲它不更新我爲該值設置的ngModel
)。
也許inputDebugEl.triggerEventHandler
可以調用,但我不知道給它什麼參數,所以它會模擬用戶鍵入一個特定的輸入字符串。
非常感謝Jon。這工作很好,ngModel獲取所需的文本更新。你真的爲我的答案省下了一大堆時間。 – Daniel
執行此操作時是否還有其他任何陷阱?我試圖讓這個解決方案起作用,但到目前爲止還沒有能夠讓模型更新。我在Angular 2.1.2上,所以不確定自從這篇文章以來是否有任何內容被破壞/改變。 –
@NathanG不是我記得的。嘗試更多或更少的更改檢測並等待穩定性可能會有所幫助。 – jonrsharpe