Как мне запустить событие загрузки окна в этом тесте Jest? - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь настроить мой первый тест DOM-манипуляции / JQuery Jest в моем проекте Rails. В своей основной форме на данный момент я просто пытаюсь устранить основные препятствия: «импортированные функции Javascript делают что-либо вообще».

Для этого у меня есть следующий код в PledgeFormUpdates.js.test:

'use strict';

import pledge_form_updates from '../../app/javascript/components/PledgeFormUpdates.js';

test('Displays GDPR checkbox on EU country selection', () => {

  // Set up our document body
  document.body.innerHTML =
    '<select id="pledge_pledgor_home_country" class="country-select"></select>'// +

    pledge_form_updates();
    const $ = require('jquery');

    $(window).trigger('load');
    $("#pledge_pledgor_home_country").trigger('change');
});

И в PledgeFormUpdates.js у меня есть следующее:

export default function() {
  console.log('hello world');
  window.addEventListener("load", function() {

    console.log('mellow curled');
    $("#pledge_pledgor_home_country").change(function() {
      console.log('yellow twirled')
    });
  });
};

Поэтому, когда я запускаю тест, я ожидаю увидеть распечатку, включая «Привет мир», «мягко завитый »и« желтый закрученный ». Но на практике он останавливается после первого вывода, и поэтому предположительно событие окна load фактически не запускается (что я подтвердил, закомментировав строку window.addEventListener..., а затем увидев все три распечатки).

Что я здесь не так делаю - точнее, как должен вызвать событие загрузки? (Я также пытался $(window).load();, но это просто вызывает ошибку TypeError)

1 Ответ

0 голосов
/ 13 ноября 2019

Я нашел обходной путь для этого, хотя это кажется довольно хакерским. В тестируемом файле, если я заменим строку

window.addEventListener("load", function() {,

на

$(window).on("load", function() {

, затем запустим тест (включая $(window).trigger('load'); оператор) печатает все строки журнала.

Я должен что-то упустить, потому что не могу поверить, что Jest потребует JQuery для запуска события загрузки страницы, но сейчаспо крайней мере, это работает.

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