angularjs - Karma 和 Ionic 上的 CordovaCamera 选项

标签 angularjs cordova unit-testing ionic-framework karma-runner

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

.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);
    }
  }
}])

最佳答案

我认为你不应该通过硬编码法拉利来改变你的代码,而是在你的测试中使用 $cordovaCamera 的模拟。你可以结帐 https://github.com/ecofic/ngCordovaMocks

或结帐http://cgewecke.github.io/ionic-karma-guide/以获得更实用的指南。

关于angularjs - Karma 和 Ionic 上的 CordovaCamera 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938881/

相关文章:

unit-testing - 如何在本地或 Jenkins 上*自动化*基于浏览器的单元测试

javascript - 将 Angularjs Protractor promise 从字符串转换为 float ?

javascript - 在 ngResource 中指定 url 参数

javascript - AngularJS Socket.io : Cannot read property 'emit' of undefined

cordova - Android/Phone Gap - 如何录制 MP3

android - Mockito:如何将 getString 与 mockito 一起使用?

ios - 值为 nil 的 NSMutableDictionary

javascript - 在作用域与父作用域中观察相同值的变化——有区别吗?

javascript - Cordova 中按距离排序数组

android - 如何修复 Module 依赖于一个或多个 Android Libraries 但在构建 Cordova App 时是一个 Jar