修复错误:未实现:角度测试期间window.open

时间:2018-12-28 14:17:54

标签: angular jasmine angular-test

我目前正在测试我正在开发的角度应用程序,并且正在遇到难以测试功能的问题,该功能只会为外部站点打开一个新窗口。当我在函数上运行测试时,出现错误

错误:未实现:window.open

下面是一些代码,第一行是我遇到错误的地方

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

如何修复此功能以确保不会出现此错误?还有另一种方法可以测试在新位置打开窗户以完全避免此问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您应该在测试中监视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 函数代替。