Angularjs 如何模拟CacheFactory(而不是$CacheFactory)?
我正在使用angular-cache.js提供的CacheFactory,为了测试我的工厂,我需要对其进行模拟。 这是我在工厂中用于缓存的代码Angularjs 如何模拟CacheFactory(而不是$CacheFactory)?,angularjs,unit-testing,caching,Angularjs,Unit Testing,Caching,我正在使用angular-cache.js提供的CacheFactory,为了测试我的工厂,我需要对其进行模拟。 这是我在工厂中用于缓存的代码 var cache = CacheFactory.createCache('documentTypeCache', { deleteOnExpire: 'aggressive', recycleFreq: 55 * 60 * 1000, maxAge: 60 * 60 *
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不是指向CacheFactory.createCache
的对象
我试着在谷歌上搜索,但似乎没有太多关于角度缓存的信息。
有什么办法吗?试试
mockCacheFactory = {
createCache: jasmine.createSpy('createCache'),
$get: angular.noop
};
$provide.provider('CacheFactory', mockCacheFactory);
如果您想知道,angular.noop
可以作为一种快速返回没有功能的函数的方法。试试
mockCacheFactory = {
createCache: jasmine.createSpy('createCache'),
$get: angular.noop
};
$provide.provider('CacheFactory', mockCacheFactory);
如果你想知道,angular.noop
可以作为一种快速返回没有功能的函数的方法。经过一番努力,我找到了一种方法让它工作。我在错误的地方嘲笑createCache。它必须以$get返回。下面是代码片段
$provide.provider('CacheFactory', function() {
this.$get = function () {
return {
createCache: jasmine.createSpy('createCache')
};
}
});
工作起来很有魅力:)经过一番努力,我找到了一种方法让它工作起来。我在错误的地方嘲笑createCache。它必须以$get返回。下面是代码片段
$provide.provider('CacheFactory', function() {
this.$get = function () {
return {
createCache: jasmine.createSpy('createCache')
};
}
});
工作就像一个符咒:)