[英]How to mock array data with object for unit testing in Angular 8
我想編寫一個單元測試來測試 expectedData 是否按expectedData
顯示。 HTML 代碼正在運行,它可以正確顯示所有內容。
HTML 代碼:
<div class="col-6 p-0 LHS" *ngIf="data && data.type === 'App'"> <div *ngFor="let d of data"> <div class="row"> <div class="col-auto">Item1:</div> <div class="appItem1">{{d.item1}}</div> </div> </div> </div>
TS 文件:
data = [{item1: "Item 1", item2: "Item 2"}, type: "App", display: true]; // sample input data
expectedData;
getExpectedData() {
if (this.data && this.data.item) {
switch (this.data.type) {
case ("File"):
this.expectedData = $('.fileItem1')[0].innerHTML;
break;
case ("App"):
this.expectedData = $('.appItem1')[0].innerHTML;
break;
}
}
}
我的測試用例:
it('should verify expected data', () => {
const mockdata= [{item1: "Item 1"}];
mockdata.type= 'App'; // getting error because this can't be pushed to array
mockdata.display= true; // getting error because this can't be pushed to array
component.data = mockdata;
fixture.detectChanges();
component.getExpectedData();
expect(component.expectedData).toBe("Item 1");
});
但是,在我的測試用例中,似乎無法將數據模擬為那種類型的數據,是否有任何可能的方法來測試getExpectedData()
?
謝謝
我不知道為什么你有一個變異的數組,但就這樣吧。 答案之一是使用
//@ts-ignore
const mockdata= [{item1: "Item 1"}];
//@ts-ignore
mockdata.type= 'App';
//@ts-ignore
mockdata.display= true;
component.data = mockdata;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.