Angular Typescript: как передать данные в CustomEvent в тесте Жасмин - PullRequest
0 голосов
/ 03 октября 2019

Ответ на этот похожий вопрос устарел. Невозможно изменить данные CustomEvent

Я пишу тест Жасмин, в котором я пытаюсь передать данные.

В реальном приложении, когда событие onSelect отправляется вФункция прослушивания

console.log('here', JSON.stringify(evt)) 

показывает данные, которые должны быть ожидаемыми. Например:

{ "id" : "31", "date_inserted" : "2018-05-12T13:36:32" }

Однако, когда я пишу свой тест с жасмином, я не могу передать данные в CustomEvent. Некоторые исследования показывают, что «detail» является свойством только для чтения.

Фрагмент кода ниже получает элемент HTML, к которому прикреплен прослушиватель onSelect. Console.log срабатывает, как и ожидалось, однако единственное, что когда-либо возвращается, это {"isTrusted": false}

it('should see the data' () => {
    const myButton = nativeElement.querySelector('#myButton');
    expect(myButton).not.toBeNull();
    myButton.dispatchEvent(new CustomEvent('onSelect', {"detail: {"foo": "bar"}});
});

Должен быть способ сделать это. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Я НАКОНЕЦ разобрался, как это сделать.

По какой-то причине javascript-версия этого, как любезно предложено Алексом, похоже, не работает в тестировании жасмина для машинописи.

Что работает следующим образом:

const selectEvent: any = document.createEvent('CustomEvent');
selectEvent.id = '1';
selectEvent.initEvent('onSelect', true, true);
myButton.dispatchEvent(selectEvent);
0 голосов
/ 03 октября 2019

JSON.stringify() преобразует только собственные свойства. Все, что в прототипе - не подлежит строгой обработке. Попробуйте обратиться непосредственно к требуемым данным.

Например, обычное 'resize' событие показывает '{"isTrusted":true}' при выполнении JSON.stringify(e). Но содержит все необходимые данные

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...