窗口对象未在茉莉花中定义

时间:2017-10-06 10:01:57

标签: javascript typescript jasmine window

我正在尝试测试一种方法,其中它所做的一件事就是锁定屏幕的方向。然而,Jasmine在行中抛出错误:
(<any>window).screen.orientation.lock('portrait')undefined is not a constructer

我甚至尝试过不使用打字稿类型而只使用window.screen.msOrientationLock('landscape')和其他window.screen方法,但我得到了同样的错误。我的_$window_也注入beforeEach

测试它是否锁定不是我测试的必要部分,因此有一些方法可以跳过此特定行或更正此错误。谢谢:)

1 个答案:

答案 0 :(得分:0)

这很容易。我必须注入窗口对象并将其分配给全局beforeEach中的全局变量,如下所示:

$window = _$window_;

然后,下一个问题是,orientation对象中的属性window.screen不可用。我只需要在我的规范中嘲笑它:

$window.screen.orientation = { lock: function() { return; } };

在监视/调用其中包含window.screen.orientation.lock方法的方法之前,必须这样做。