Я пытаюсь манипулировать свойством documentElement lang для своих тестов.И не могу понять, как я могу это сделать.Я уже пытался определить setupFiles в конфигурации Jest - и это дало мне возможность определить его и не было возможности изменить его для различных тестов - как описано здесь: Пересмешивание `документа` в jest
Часть тестирования код выглядит так:
const lang: string = document.documentElement.lang ?
document.documentElement.lang : Constraints.DEFAULT_LANGUAGE;
тест выглядит следующим образом:
test('should pass `en` language when document hasn`t any specified', () => {
const spy = jest.spyOn(window.document, 'documentElement', 'get');
expect(spy).toHaveBeenCalled();
});
И с setupFiles:
Object.defineProperty(document, 'documentElement', {
writable: true,
configurable: true,
value: document.createElement('document')
});
Когда у меня есть файлы настройки, я получаю сообщение об ошибке: Property documentElement does not have access type get
Но когда я пытаюсь шпионить за ним без настроенного setupfile.js
, шпион никогда не вызывается.
РЕДАКТИРОВАТЬ
Более четкий пример того, чего я пытаюсь достичь:
const lang: string = document.documentElement.lang ?
document.documentElement.lang : Constraints.DEFAULT_LANGUAGE;
component.src = `/${lang}/mysite`;
test('should pass `de` language when document has one specified', () => {
const spy = jest.spyOn(window.document, 'documentElement', 'get');
const mockElement = document.createElement('document');
mockElement.lang = 'de';
spy.mockReturnValue(mockElement);
expect(component.src).toContain('/de/');
});
И в тесте я получаю:
expect(received).toContain(expected) // indexOf
Expected substring: "/de/"
Received string: "http://localhost/en/mysite"