У меня возникли проблемы с пониманием того, каким будет поток тестирования для тестирования функций, использующих функции, загруженные из библиотеки JavaScript от Intercom.
Мой метод выглядит так:
export const generateButton = (handleOnClick) => {
case "moo":
return <button onClick = {() => Intercom('show')}>Sign Up</button>
default:
return 'moo'
Ошибка, которую я получаю при запуске:
ReferenceError: Intercom is not defined
Нет, интерком из CDN, и я не хочу, чтобы шуточные тесты скачивались с него каждый раз, когда он запускается.
Итак, вы пытаетесь протестировать функцию, использующую Интерком, но не хотите тестировать сам Интерком?
точно, я хочу, чтобы тест полностью игнорировал часть внутренней связи
Добавлен ответ, который должен работать для того, что вы хотите сделать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если я понимаю, что вы пытаетесь сделать, создайте dummyFunction для замены Intercom в ваших тестах. Что-то вроде этого...
const Intercom = jest.fn();
describe('button click', () => {
it('Intercom is called correctly', () => {
// whatever component contains the button should be mounted
const wrapper = mount(<YourComponentHere />);
// you may need to add a class to target the specific button
wrapper.find('button').simulate('click');
expect(dummyFunction).toHaveBeenCalledWith('show');
expect(dummyFunction).toHaveBeenCalledTimes(1);
});
});
к сожалению тот же результат, ReferenceError: Intercom не определяется. Я полагаю, это потому, что сам Intercom не подвергается воздействию среды Jest, а вызывается напрямую.
Возможно, вам придется импортировать его, даже если он не вызывается.
Если кто-то собирается поставить минус, вы должны хотя бы оставить комментарий о том, почему. Я пытался быть полезным, и голосование должно быть оставлено за бесполезные ответы...
Итак, я понял, мне нужно было добавить новый файл и указать на него jest, настроенный на package.json, вот так (добавленный файл - mockObject)
"setupFiles": [
"./config/jest/setupJest.js",
"./config/jest/mockObject.js"
],
то в самом файле есть это
global.Intercom = () => {
console.info('Intercom called')
}
Вы импортируете
Intercomв свой тестовый файл, где пытаетесь запустить функцию?