2016-07-22 48 views
1

我想測試一個API在瀏覽器中不存在時的行爲。如何刪除單元測試的窗口/導航器JS 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

通過他們在你的代碼作爲一個依賴。 – zerkms

回答

0

是否有可能完全刪除這些全局範圍的屬性?

據我所知。一種解決方案是使代碼獨立於全局範圍。

把這個特性包裝在一個函數中,把這些對象原語作爲參數,然後在你的測試中模擬它們。