W3C 通知范围
W3C Notification Coverage
由于 PhantomJS 无法使用 W3C 通知,我无法将代码覆盖率提高到 100%。我有以下功能:
function requirespermission(overwrite){
if(overwrite || (typeof Notification !== 'undefined' && Notification.permission === 'granted'))
{
return true;
}
else if(!overwrite || typeof Notification !== 'undefined'){
Notification.requestPermission();
}
return false;
}
我的测试如下:
it('should be able to get permission', function(){
notificationservice.requirespermission(true);
});
it('should be able to not get permission', function(){
notificationservice.requirespermission(false);
});
但无论我做什么,else 函数的条件覆盖率都保持在 2/4(这是有道理的,但我必须实施跨浏览器支持检查)。我使用以下工具:
- Karma + Jasmine 用于测试
- 因果报应覆盖范围
- PhantomJS 作为单元测试浏览器
- Cobertura 作为记者
- (詹金斯为 CI)
如何让else函数通过代码覆盖率测试?
我通过使用 Notify.js 在通知周围使用包装器解决了这个问题。现在的代码是:
function requirespermission(overwrite){
if(!Notify.needsPermission || overwrite)
{
return true;
}
else if(Notify.isSupported()){
Notify.requestPermission();
}
return false;
}
和测试:
it('should be able to not get permission', function(){
notificationservice.requirespermission(true);
});
it('should be able to not get permission', function(){
spyOn(Notify, 'isSupported').and.returnValue(true);
notificationservice.requirespermission(false);
});
it('should handle not-supported', function(){
spyOn(Notify, 'isSupported').and.returnValue(false);
notificationservice.requirespermission(false);
});
由于 PhantomJS 无法使用 W3C 通知,我无法将代码覆盖率提高到 100%。我有以下功能:
function requirespermission(overwrite){
if(overwrite || (typeof Notification !== 'undefined' && Notification.permission === 'granted'))
{
return true;
}
else if(!overwrite || typeof Notification !== 'undefined'){
Notification.requestPermission();
}
return false;
}
我的测试如下:
it('should be able to get permission', function(){
notificationservice.requirespermission(true);
});
it('should be able to not get permission', function(){
notificationservice.requirespermission(false);
});
但无论我做什么,else 函数的条件覆盖率都保持在 2/4(这是有道理的,但我必须实施跨浏览器支持检查)。我使用以下工具:
- Karma + Jasmine 用于测试
- 因果报应覆盖范围
- PhantomJS 作为单元测试浏览器
- Cobertura 作为记者
- (詹金斯为 CI)
如何让else函数通过代码覆盖率测试?
我通过使用 Notify.js 在通知周围使用包装器解决了这个问题。现在的代码是:
function requirespermission(overwrite){
if(!Notify.needsPermission || overwrite)
{
return true;
}
else if(Notify.isSupported()){
Notify.requestPermission();
}
return false;
}
和测试:
it('should be able to not get permission', function(){
notificationservice.requirespermission(true);
});
it('should be able to not get permission', function(){
spyOn(Notify, 'isSupported').and.returnValue(true);
notificationservice.requirespermission(false);
});
it('should handle not-supported', function(){
spyOn(Notify, 'isSupported').and.returnValue(false);
notificationservice.requirespermission(false);
});