Как создать новое событие для модульного тестирования в Angular 2?

Привет, я пишу модульный тест для моего углового кода. Я пытаюсь обновить текстовое поле в gridview. Ниже приведен мой код сетки.

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

Ниже функция выполняет обновление.

 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();
    }

Ниже пример модульного теста, который я пишу, чтобы проверить приведенный выше код.

 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);
    });

В приведенном выше методе первым параметром должно быть событие. Может ли кто-нибудь помочь мне, как создать событие? Любая помощь будет оценена по достоинству. Спасибо


person Niranjan    schedule 22.05.2018    source источник
comment
Я не знаю, хотите ли вы этого, но вы можете сделать закодированное значение event.target.value и проверить в своей функции updateValue, будет ли rowsCache[rowIndex][cell] иметь это значение. Вы можете издеваться над событием с помощью простого объекта, например: const event = { target: { value: 42 }}; component.updateValue(event, cell, cellValue, rowIndex);   -  person Adrii SAULNIER    schedule 22.05.2018
comment
да это то что я искал. Спасибо   -  person Niranjan    schedule 22.05.2018
comment
Хороший ! Я написал решение :)   -  person Adrii SAULNIER    schedule 22.05.2018


Ответы (1)


Вы можете сделать жестко заданное значение event.target.value и проверить в своей функции updateValue, будет ли rowsCache[rowIndex][cell] иметь это значение.

Вы можете имитировать событие с помощью простого объекта, например:

const event = { target: { value: 42 }};
component.updateValue(event, cell, cellValue, rowIndex);
person Adrii SAULNIER    schedule 22.05.2018
comment
Примечание. Это не сработает, если ваш аргумент введен как объект Event. Не хватает нескольких свойств, если вы хотите использовать этот тип. - person TheCodeFox; 15.11.2019
comment
@TheCodeFox Вы знаете какое-нибудь решение этой проблемы? мы не можем полностью имитировать объект Event, это пустая трата времени, приведение типов тоже не сработало - person Raphaël VO; 19.06.2021