我想在浏览器中不存在API时测试库的行为。
例如,如果我有以下检查:
if ('serviceWorker' in navigator &&
'PushManager' in window &&
'Notification' in window &&
'showNotification' in ServiceWorkerRegistration.prototype) {
// Do something
} else {
throw new Error('Catch in test');
}
是否可以完全删除这些全局范围的属性?
答案 0 :(得分:0)
是否可以完全删除这些全局范围的属性?
据我所知。一种解决方案是使代码独立于全局范围。
包装此功能检查将这些对象基元作为参数的函数,然后在测试中模拟它们。
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, {})