如何使用 Jest 模拟"window.screen.orientation.lock"函数?



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

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

这是jsdomwindow.screen实施的内容。

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

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!
})

最新更新