如何移除用于单元测试的窗口/导航器JS API
How to remove a window / navigator JS API for unit testing?
当浏览器中不存在API时,我想测试库的行为。
例如,如果我有以下检查:
if ('serviceWorker' in navigator &&
'PushManager' in window &&
'Notification' in window &&
'showNotification' in ServiceWorkerRegistration.prototype) {
// Do something
} else {
throw new Error('Catch in test');
}
是否可以完全删除这些全局作用域上的属性?
是否可以完全删除这些全局作用域上的属性?
据我所知不是。一种解决方案是使代码独立于全局范围。
将这个特性检查包装成一个函数,将这些对象基元作为参数,然后在测试中模拟它们。
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, {})
相关文章:
- 如何在react js中从一个页面导航到另一个页面
- 删除移动视图粘性js上的粘性导航栏
- 如何让JS脚本在导航后继续运行(谷歌chrome控制台)
- 使用video.js在视频中进行章节导航
- fullpage.js和物化.js;使用实体侧导航禁用鼠标滚动
- Javascript散列导航&外部js文件
- 如何在highstock.js中限制导航器的大小
- pager.js的导航问题
- 带挖空.js的流畅导航
- Ext JS工具栏和痕迹导航示例在JSFiddle中不起作用
- Ionic Angular JS导航项未导航
- 固定顶部导航的impress.js无法工作
- 如何让Capybara/Poltergeist等待js启动的导航完成
- 带有JS的导航(双重打开)
- 可访问的更改菜单项,用于使用不引人注目的JS进行导航,而不是jQuery,
- 导航栏中的bootstrap输入,selectize.js未展开
- 在Visual Studio中调试/导航JS代码
- 粘性导航-JS Waypoints在浏览器调整大小时出现自定义粘性导航问题
- 键盘导航js
- 如何使用本地滚动进行水平导航.js