Как проверить функцию zendesk с помощью Jest - PullRequest
3 голосов
/ 24 сентября 2019

У меня есть компонент React, который при монтировании создает элемент скрипта и либо загружает скрипт ZenDesk (который включает в себя инструкцию $ zopim.livechat.window.hide (), либо, если он уже загружен, вызывает $ zopim.livechat.window.hide ()).

const scriptElement = document.createElement('script');
const scriptNode=  document.createTextNode(zopim == null ? zopimJs : '$zopim.livechat.window.hide()');
scriptElement.async = true;
scriptElement.appendChild(scriptNode);
document.body.appendChild(scriptElement);

Как я могу проверить это с помощью Enzyme / Jest?В идеале я хочу проверить, что эта функция hide () вызывается (а не проверять результаты этого вызова).

Или, может быть, мне нужно подойти ко всему по-другому?

Любые идеи приветствуются

cheers

Добавлено: скрипт инициализации zopim выглядит так:

window.$zopim||function(e,t){var i=$zopim=function(e){i._.push(e)},o=i.s=e.createElement(t),a=e.getElementsByTagName(t)[0];i.set=function(e){i.set._.push(e)};i._=[];i.set._=[];o.async=!0;o.setAttribute("charset","utf-8");o.src="https://v2.zopim.com/?58crBwjpXFSYXv6eloiat27G1SqQOJvC";i.t=+new Date;o.type="text/javascript";a.parentNode.insertBefore(o,a)}(document,"script");$zopim(function(){var t="Customer Support";var i="Customer Support";var o="Please enter your message below. An expert will get back to you shortly.";$zopim.livechat.setOnConnected(function(){var e=$zopim.livechat.departments.getDepartment(t);if(typeof e=="undefined"){$zopim.livechat.setStatus("offline");$zopim.livechat.hideAll();return false}if(e.status=="offline"){$zopim.livechat.setStatus("offline");$zopim.livechat.hideAll()}else{$zopim.livechat.window.setTitle(i);$zopim.livechat.theme.setColor("#FF6B00");$zopim.livechat.theme.reload();$zopim.livechat.addTags(t);$zopim.livechat.departments.filter("");$zopim.livechat.prechatForm.setGreetings(o);$zopim.livechat.departments.setVisitorDepartment(t);$zopim.livechat.window.hide()}})});

так как бы я это высмеял в тесте?И тот факт, что этот скрипт выполняется асинхронно - как лучше проверить его после монтирования компонента?

1 Ответ

1 голос
/ 24 сентября 2019

Вы можете добавить метод класса, который вызывает $zopim.livechat.window.hide(), и использовать наблюдателя, чтобы проверить, вызывается ли этот метод класса.

На основе вашего примера кода трудно понять, насколько глубже может быть тестирование.не зная, какую функциональность zopim вы высмеяли в своем наборе тестов.

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