如何解决使用玩笑模拟诸如窗口之类的全局对象的字段
我正在尝试为小型实用程序类编写代码,以检测方向的变化。不幸的是,我发现访问这些字段window.orientation
和window.screen.orientation
我看到window.orientation
已过时。我发现的替代方法是Safari不支持的实验性检测api。因此,我决定暂时使用已弃用的api,直到找到更好的东西为止。
在尝试使用window.orientation
的相同方法时,我遇到了类似的问题。
基本上,我们尝试更改的属性是只读属性。
在这种情况下正确的方法是什么?
请注意lib.dom.d.ts中存在关于window.orientation的弃用警告
解决方法
您可以使用Object.defineProperty()进行此操作。
例如
Stage 2
:
index.ts
export function main() {
const orientation = window.screen.orientation;
return orientation.type;
}
:
index.test.ts
具有覆盖率报告的单元测试结果:
import { main } from './';
describe('63570675',() => {
it('should pass',() => {
Object.defineProperty(window.screen,'orientation',{
value: { type: 'landscape-primary' },});
const actual = main();
expect(actual).toEqual('landscape-primary');
});
});
源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/63570675
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。