我正在使用angular-cache.js git link提供的CacheFactory,我需要模拟它才能测试我的工厂。 这是我在工厂中用于缓存的代码。
var cache = CacheFactory.createCache('documentTypeCache', {
deleteOnExpire: 'aggressive',
recycleFreq: 55 * 60 * 1000,
maxAge: 60 * 60 * 1000,
storageMode: 'sessionStorage'
});
这就是我在测试中嘲笑它的方式。
mockCacheFactory = function(){
this.createCache = jasmine.createSpy('createCache');
this.$get = function(){};
};
$provide.provider('CacheFactory', mockCacheFactory);
但是,测试失败时:Undefined is not an object
指向CacheFactory.createCache
。
我尝试使用Google搜索,但似乎没有太多与angular-cache相关的信息。 关于如何做到这一点的任何想法?
答案 0 :(得分:0)
尝试..
mockCacheFactory = {
createCache: jasmine.createSpy('createCache'),
$get: angular.noop
};
$provide.provider('CacheFactory', mockCacheFactory);
如果您想知道,angular.noop
可以用作快速返回无功能的功能。
答案 1 :(得分:0)
经过一些头脑攻击之后,我找到了一种让它发挥作用的方法。我在错误的地方嘲笑createCache。它必须由$ get返回。以下是代码段。
$provide.provider('CacheFactory', function() {
this.$get = function () {
return {
createCache: jasmine.createSpy('createCache')
};
}
});
像魅力一样工作:)