我正在为我的 Ionic 应用编写单元测试,但在测试相机相关功能时遇到了问题。我的代码使用 cordova.js
设置的两个全局变量:Camera 和 CameraPopoverOptions。由于文件只插入到实际的移动设备上,因此当测试需要它们时,它们都是 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/