typescript - Angular 2'de birim testi için yeni bir etkinlik nasıl oluşturulur?


Merhaba, Angular kodum için bir birim test case yazıyorum. Gridview'daki metin kutusunu güncellemeye çalışıyorum. Aşağıda gridview kodum var.

<input *ngIf="editing[rowIndex + '-scopevalue']" class="inline-editor" autofocus (blur)="updateValue($event, 'scopevalue', value, rowIndex)" type="text" [value]="value" />

Aşağıdaki fonksiyon güncelleme yapar.

 updateValue(event, cell, cellValue, rowIndex) {
        this.editing[rowIndex + '-' + cell] = false;
        this.rows[rowIndex][cell] = event.target.value;
        this.rowsCache[rowIndex][cell] = event.target.value;
        this.scopeEdit = this.rows[rowIndex];
        this.updateScope();
    }

Yukarıdaki kodu kontrol etmek için aşağıdaki birim testini yazıyorum.

 it('update scope name value', () => {
        var row = component.rows[0];
        let cell = 'scopevalue';
        let cellValue = row.scopevalue;
        let rowIndex = 0;
        component.updateValue('/bmw', cell, cellValue, rowIndex);
    });

Yukarıdaki yöntemde, ilk parametrenin olay (event) olması gerekiyor. Birisi bana olay oluşturmayı nasıl yapacağımı gösterebilir mi? Her türlü yardım takdir edilir. Teşekkürler

Cevap #1

event.target.value değerini sabit (hardcoded) bir değer yapabilir ve updateValue fonksiyonunuzda rowsCache[rowIndex][cell] öğesinin bu değere sahip olup olmadığını doğrulayabilirsiniz.

Bir olayı basit bir nesne ile taklit edebilirsiniz, şöyle :

const event = { target: { value: 42 }};
component.updateValue(event, cell, cellValue, rowIndex);

Cevap #2

Yönteminizin argümanı bunun yerine bir Event nesnesi olarak yazılmışsa:

const mockEvent: Event = <Event><any>{
  target: {
      value: 42      
  }
};
component.updateValue(mockEvent, cell, cellValue, rowIndex);

İlgili makaleler