Исправление ошибки: не реализовано: window.open во время углового тестирования

В настоящее время я тестирую угловое приложение, над которым я работаю, и я сталкиваюсь с трудным тестированием функции, которая просто откроет новое окно на внешнем сайте. Когда я запускаю тесты своей функции, я получаю сообщение об ошибке

Ошибка: не реализовано: window.open

Ниже приведен код, в первой строке я получаю сообщение об ошибке

const blankWindow = window.open('', _blank);
blankWindow.location.href = externalSiteUrl

Как мне исправить эту функцию, чтобы убедиться, что я не получаю эту ошибку? Есть ли другой способ проверить открытие окна в новом месте, чтобы вообще избежать этой проблемы?

Спасибо


person Community    schedule 28.12.2018    source источник
comment
Тестирую, значит жасмин?   -  person SeleM    schedule 28.12.2018
comment
Возможный дубликат Jasmine.js Testing - шпионить за window.open   -  person SeleM    schedule 28.12.2018


Ответы (1)


Вы должны шпионить за window.open в своем тесте.

 const windowOpenSpy = spyOn(window, 'open');

и вы можете проверить, был ли он вызван из вашего метода или вашими действиями:

expect(windowOpenSpy).toHaveBeenCalledWith(externalSiteUrl);

Обновление: если вы хотите проверить, что open был запущен, вы должны сделать:

spyOn(window, 'open').and.callThrough()

...

expect(window.open).toHaveBeenCalled()

.and.callThrough() действительно важно. Если вы ее не используете, то обычная open будет заменена функцией dummy/mock, которая ничего не делает.

person nircraft    schedule 28.12.2018
comment
Спасибо за ответ. Еще одна проблема, которая возникает сейчас, заключается в том, что когда я запускаю функцию, которая вызывает две строки выше (из моего вопроса), я получаю сообщение об ошибке, не могу прочитать местоположение неопределенного. У вас есть идеи, почему это может быть? - person ; 29.12.2018
comment
Это потому, что вы пытаетесь установить href blankWindow.location.href - person nircraft; 29.12.2018