Я хочу проверить, не вызывается ли библиотечная функция, когда значение токена равно нулю.Для этого я должен изменить фиктивное значение GOOGLE_ANALYTICS_TRACKING_ID между юнит-тестами.Он хранится в «config.js», который выглядит следующим образом:
module.exports = {
GOOGLE_ANALYTICS_TRACKING_ID: process.env.GOOGLE_ANALYTICS_TRACKING_ID
};
Также он используется с GoogleAnalytics, который является HOC.Внутри него я импортирую конфигурацию следующим образом:
import { GOOGLE_ANALYTICS_TRACKING_ID } from 'config';
Мой тест выглядит так:
import React from 'react';
import { shallow } from 'enzyme';
import ReactGA from 'react-ga';
import withGoogleAnalytics from '../withGoogleAnalytics';
jest.mock('react-ga', () => ({
pageview: jest.fn(),
initialize: jest.fn()
}));
jest.mock('config', () => ({ GOOGLE_ANALYTICS_TRACKING_ID: '123' }));
const Component = withGoogleAnalytics(() => <div />);
describe('HOC withGoogleAnalytics', () => {
describe('render', () => {
const shallowWrapper = shallow(<Component />);
it('should fire initialize action', () => {
expect(ReactGA.initialize).toHaveBeenCalledWith('123');
});
it('should have pageview prop set', () => {
expect(shallowWrapper.prop('pageview')).toBe(ReactGA.pageview);
});
it('should not fire initialize action', () => {
expect(ReactGA.initialize).not.toHaveBeenCalled();
});
});
});
Из того, что я прочитал в StackOverflow и GitHub, я должен быть в состоянии сделать это с помощьюjest.resetModules () и jest.mockImplementation (), но все примеры были насмешливыми функциями.Здесь мне нужно изменить строковое значение между тестами.Как я могу это сделать?