gpt4 book ai didi

javascript - 如何删除用于单元测试的窗口/导航器 JS API?

转载 作者:行者123 更新时间:2023-11-28 20:52:56 24 4
gpt4 key购买 nike

我想在浏览器中不存在 API 时测试库的行为。

例如,如果我有以下检查:

if ('serviceWorker' in navigator &&
'PushManager' in window &&
'Notification' in window &&
'showNotification' in ServiceWorkerRegistration.prototype) {
// Do something
} else {
throw new Error('Catch in test');
}

是否可以完全删除这些全局范围内的属性?

最佳答案

Is it possible to completely remove properties on these global scopes?

据我所知没有。一种解决方案是使代码独立于全局范围。

将此功能检查包装在一个将这些对象原语作为参数的函数中,然后在您的测试中模拟它们。

function initServiceWorker(window, navigator) {
if ('serviceWorker' in navigator &&
'PushManager' in window &&
'Notification' in window &&
'showNotification' in ServiceWorkerRegistration.prototype) {
// Do something
} else {
throw new Error('Catch in test');
}
}

initServiceWorker(window, navigator)
alert("first test passed")
initServiceWorker(window, {})

关于javascript - 如何删除用于单元测试的窗口/导航器 JS API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38516458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com