Как получить функцию конструктора из оконного объекта в TestCafe? - PullRequest
3 голосов
/ 26 июня 2019

В моих тестах testcafe мне нужно получить функцию конструктора для библиотеки, которую я использую, чтобы вызвать для нее статический метод.

Однако я не могу сделать это с помощью заданной ClientFunction иЭваль методы.Как я могу получить функцию конструктора?

Я пробовал следующее:

// Does not work, because the docs say it only allows using ClientFunction for obtaining "serializable" values

let getSortable = new ClientFunction(() => window.Sortable);
test('test', async t => {
    let Sortable = await getSortable();
    console.log(Sortable); // Logs undefined
});
test('test', async t => {
    let Sortable = await t.eval(() => window.Sortable);
    console.log(Sortable); // Logs undefined (not sure why)
});

1 Ответ

4 голосов
/ 26 июня 2019

Мне нужно получить функцию конструктора для библиотеки, которую я использую, чтобы вызвать для нее статический метод.

Это невозможно сделать.Вы не можете вызывать функцию из среды JavaScript браузера в среде Node.js, в которой выполняются тесты.Чтобы выполнить ваш сценарий, вызовите целевой статический метод в ClientFunction и верните результат из него.

cosnt getStaticData = ClientFunction(() => {
   const data = window.Sortable.staticMethod();

   return JSON.serializable(data);
});

...