2016-02-09 20 views
0

我是科尔多瓦应用程序的测试新手,所以你可以给我一个关于什么是“最佳实践”在我的情况的建议? 情况:我有一个模块工厂:如何模拟调用cordova插件的特定方法?

angular 
    .module('app.services') 
    .factory('UtilsService', UtilsService); 

function UtilsService() { 

    var service = { 
     isWindows: isWindows, 
     isAndroid: isAndroid 
    }; 

    return service; 

    function isWindows() { 
     return /windows/i.test(device.platform); 
    } 

    function isAndroid() { 
     return /android/i.test(device.platform); 
    } 
} 

和一个简单的测试isWindows方法:

describe('Util Service Tests', function() { 

var utilSvc; 

beforeEach(function() { 
    module('app'); 
}); 
beforeEach(function() { 
    inject(function($injector) { 
     utilSvc = $injector.get('UtilsService'); 
    }); 
}); 

it('should detect windows', function() { 
    expect(utilSvc.isWindows).toBe(true); 
}); 

}); 

我运行Chitzpah亚军的测试,并得到一个错误:

'device' is undefined

我已经找到了可能的解决方案,如chrome-cordova扩展,但它在我的情况下不起作用(或者我做错了它)。那么我应该在这里做什么?模拟电话设备方法?如果是的话,该怎么做?

在此先感谢!

回答

0

您是否尝试过用科尔多瓦浏览器平台,可与CLI添加:

cordova platform add browser 

这提供了用科尔多瓦的API /插件,在浏览器中的一些支持,但您使用的插件需要通过JavaScript回退来支持该平台,无论其原生功能在实际的移动平台(如iOS或Android)上执行什么操作。有一个good blog post covering the browser platform here。我不清楚这个平台的维护情况如何,但可能是您要找的。

+0

感谢您的回答,但不幸的是,这并不适合我,因为我们的应用程序不针对浏览器平台,所以我不能在测试中使用它。我决定使用另一种方法,即在模拟器上运行茉莉花测试,以便所有插件都能正确加载。 – AlenSv

相关问题