Я использую следующий код, чтобы определить, была ли страница загружена в iFrame или нет.
export default function isIFrame () {
return window !== window.parent;
}
Это хорошо работает и возвращает ожидаемые значения.
Сейчас я изучаю написание модульных тестов для этого, я подумал, что это просто случай насмешки window
и window.parent
и присвоения им различных значений, что-то вроде ...
it('should return false if page is not being loaded within an iframe', () => {
window = {
somekey: 'somevalue'
};
window.parent = {
somekey: 'someothervalue'
};
const hasPageBeenLoadedInsideIframe = isIFrame();
expect(hasPageBeenLoadedInsideIframe).toEqual(false);
});
Пара вопросов, во-первых, это правильный вид модульного теста, который я должен написать?
Во-вторых, если это то, какие значения мне следует менять между window
и window.parent
? Что на самом деле отличается?
Я пытался использовать инструменты разработчика Chrome (используя команду copy($0)
), чтобы скопировать их оба и выполнить проверку различий, но я не могу заставить это работать, просто выводится [object Window]
.
Кто-нибудь может помочь?