如何使用Jest模拟“ window.screen.orientation.lock”功能?

时间:2019-04-29 20:01:10

标签: javascript angular unit-testing cordova jestjs

我们正在使用Cordova插件之一来锁定混合应用程序的方向。在AppComponent中,我们有一个锁定屏幕方向的代码。为此,我们使用 window.screen.orientation.lock 功能。如何使用Jest模拟上述功能?

1 个答案:

答案 0 :(得分:0)

默认情况下,Jest使用jsdom提供了类似浏览器的环境。

Thisjsdomwindow.screen实现的。

orientation不是由jsdom实现的,但是可以在测试期间将其添加到window.screen提供的jsdom中:

code.js

export const func = () => {
  window.screen.orientation.lock();
}

code.test.js

import { func } from './code';

test('func', () => {
  const lock = jest.fn();
  window.screen.orientation = { lock };  // <= add orientation mock to window.screen

  func();

  expect(lock).toHaveBeenCalled();  // Success!
})