Angularjs Karma和Ionic上的Cordova摄像头选项

Angularjs Karma和Ionic上的Cordova摄像头选项,angularjs,cordova,unit-testing,ionic-framework,karma-runner,Angularjs,Cordova,Unit Testing,Ionic Framework,Karma Runner,我正在为我的Ionic应用程序编写单元测试,在测试相机相关功能时遇到了一个问题。我的代码使用由cordova.js设置的两个全局变量:Camera和CameraPopoverOptions。由于该文件仅在实际移动设备上插入,因此当测试需要它们时,它们都是未定义的。我应该从哪里获取这两个变量进行测试,还是应该找出它们的值并对它们进行硬编码 .factory('Camera', ['$q', '$cordovaCamera', '$window', function($q, $cordovaCame

我正在为我的Ionic应用程序编写单元测试,在测试相机相关功能时遇到了一个问题。我的代码使用由
cordova.js
设置的两个全局变量:CameraCameraPopoverOptions。由于该文件仅在实际移动设备上插入,因此当测试需要它们时,它们都是未定义的。我应该从哪里获取这两个变量进行测试,还是应该找出它们的值并对它们进行硬编码

.factory('Camera', ['$q', '$cordovaCamera', '$window', function($q, $cordovaCamera, $window) {

  return {
    getPicture: function(options) {
      if(!$window.cordova) {
        // We are in dev mode, let's return a kickass Ferrari
        var q = $q.defer();
        q.resolve('/img/ferrari.jpg');
        return q.promise;
      }

      var options = { 
          quality : 75, 
          destinationType : Camera.DestinationType.FILE_URI, 
          sourceType : Camera.PictureSourceType.CAMERA, 
          allowEdit : false,
          encodingType: Camera.EncodingType.JPEG,
          targetWidth: 1024,
          targetHeight: 1024,
          correctOrientation: true,
          popoverOptions: CameraPopoverOptions,
          saveToPhotoAlbum: false
      };      

      // Returns a promise
      return $cordovaCamera.getPicture(options);
    }
  }
}])

我认为你不应该通过硬编码法拉利来改变你的代码,而是在你的测试中使用一个模拟的$Cordova摄像头。你可以结账

或者查看更实用的指南