我想测试一个Factory,它使用$ localForage。测试工厂内部方法的最佳方法是什么?假设Karma的配置没问题。
检查以下示例:
./测试/规格/工厂/ UX-event.js
'use strict';
describe('Service: uxEventFactory', function () {
beforeEach(module('paxApp'));
var uxEventFactory;
beforeEach(inject(function (_uxEventFactory_) {
uxEventFactory = _uxEventFactory_;
}));
it('gets an instance of uxEventFactory', function () {
expect(uxEventFactory).toBeDefined();
});
it('enqueues the item in the database', function () {
var key = uxEventFactory.enqueue('1', '2', '3', '4');
expect($localForage.getItem(key)).toBe({
name: '1',
action: '2',
label: '3',
value: '4'
});
});
});
./应用程序/脚本/工厂/ UX-event.js
'use strict';
/**
* @ngdoc service
* @name paxApp.uxEventFactory
* @description
* # uxEventFactory
* Factory in the paxApp.
*/
angular.module('paxApp')
.factory('uxEventFactory', function ($localForage) {
return {
enqueue: function (name, action, label, value) {
var uxEvent = {
name: name,
action: action,
label: label,
value: value
};
var key = 'uxevent-' + new Date().getTime();
$localForage.setItem(key, uxEvent);
return key;
}
};
});