【发布时间】:2019-09-18 11:20:42
【问题描述】:
我们正在使用其中一个 cordova 插件来锁定我们的混合应用程序的方向。在 AppComponent 中,我们有一个锁定屏幕方向的代码。为此,我们使用了 window.screen.orientation.lock 功能。如何使用 Jest 模拟上述函数?
【问题讨论】:
标签: javascript angular unit-testing cordova jestjs
我们正在使用其中一个 cordova 插件来锁定我们的混合应用程序的方向。在 AppComponent 中,我们有一个锁定屏幕方向的代码。为此,我们使用了 window.screen.orientation.lock 功能。如何使用 Jest 模拟上述函数?
【问题讨论】:
标签: javascript angular unit-testing cordova jestjs
默认情况下,Jest 使用 jsdom 提供类似浏览器的环境。
This 是 jsdom 为 window.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!
})
【讨论】: