如何模拟调用cordova插件的具体方法?

时间:2016-02-09 13:07:54

标签: angularjs cordova unit-testing jasmine chutzpah

我是测试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跑步者进行测试并收到错误:

  

'装置'未定义

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试使用可以使用CLI添加的Cordova浏览器平台:

cordova platform add browser

这为在浏览器中使用Cordova API /插件提供了一些支持,但是您使用的插件需要支持该平台,通常使用JavaScript回退到其本机功能在实际移动平台上所做的任何事情,例如iOS或Android。那是good blog post covering the browser platform here。我不清楚这个平台的维护情况如何,但它可能正是您所寻找的。