У меня есть функция для отслеживания аналитики от Google Analytics. Так что в моей функции мне нужно посмотреть, существует код или нет.
Analytics.js
const gaCode = process.env.REACT_APP_GA_TRACKING_CODE;
const gaCodeExists = gaCode && gaCode.Length > 0;
function trackEvent(category = "Event", name) {
if(gaCodeExists) {
GoogleAnalytics.event({
category,
action: name,
});
}
return;
}
export default {
gaCodeExists,
trackEvent
}
Сначала я делал это (что, я уверен, я делаю неправильно).
describe('Testing analytics', () => {
beforeEach(() => {
Analytics.trackEvent(null, 'Tracking');
});
it('should not call google analytics', () => {
if (!gaCodeExists) {
const mockGoogleAnalytics = jest.fn(() => GoogleAnalytics.event);
expect(mockGoogleAnalytics.mock.calls.length).toBe(0);
}
});
})
После прочтения некоторых постов в блоге и просмотра вопросов о стеке . Я изменил это, чтобы это, как я думаю, я издеваюсь над переменной gaCodeExists, как показано ниже.
import constants from '../index';
import { isUsingGoogleAnalytics } from '../index';
describe('Analytics Testing', () => {
it('Should test trackEvent', () => {
constants.isUsingGoogleAnalytics = true;
expect(constants.isUsingGoogleAnalytics).toBe(true);
});
});
Теперь я застрял, как я могу выполнить тестирование на функции trackEvent
. Как я могу применить переменную макет gaCodeExists к нему? Тестовые случаи были бы, если gaCodeExists
истинно, expect(mockFunction).toHaveBeenCalled(1)
.
П.С .: Я новичок в тестировании.