Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何模拟CacheFactory(而不是$CacheFactory)?_Angularjs_Unit Testing_Caching - Fatal编程技术网

Angularjs 如何模拟CacheFactory(而不是$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 *

我正在使用angular-cache.js提供的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不是指向
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')
                        };
                    }
                });
工作就像一个符咒:)