使用karma,angular-cache和beforeEach Fn

时间:2016-05-09 06:42:21

标签: angularjs jasmine karma-jasmine angular-cache

早上好

我正试图用业力来测试我们相对较大的角度应用程序(或者至少从一些测试开始)。我得到了一些小问题,但我现在想知道; karma提供了一个beforeEach函数,它在每个it代码块之前调用。 当使用angular时,我(似乎是这样)每次执行一个测试用例之前都必须调用module('app')。这不是一个完整的性能阻滞器吗?我的意思是设置整个模块,因此应用程序完全浪费性能没有?

当我将模块(&#39; app&#39;)调用到beforeAll()函数中时,我收到了 Error: [$injector:unpr] Unknown provider: CacheFactoryProvider <- CacheFactory

有没有人经历过这种情况?设置测试套件我做错了什么?

是不是想让beforeAll()允许module('app')这样的costy调用只进行一次?

下面是我的一个简单测试,它在我发布的状态下运行,所以我的问题只是关于多次调用模块的成本:S

/* jshint -W117, -W030 */
describe('blocks.filter.dateFormatter', function() {

    var filter, cacheFactory;

    //beforeAll(function() {
    //    module('app');
    //});
    // Code above leads to unknown provider error

    beforeEach(function() {
        module('app');
        inject(['$filter', 'CacheFactory',
            function($filter, $CacheFactory) {
                filter = $filter;
                cacheFactory = $CacheFactory;
                cacheFactory.destroyAll();
            }
        ]);
    });

    it('dateFormatter convert yyyy-MM-dd hh:mm:ss to dd.MM.yyyy', function() {
        expect(filter('formatDate')('2015-09-28 00:00:00')).toBe('28.09.2015');
    });

    it('dateFormatter convert yyyy-MM-dd to dd.MM.yyyy', function() {
        expect(filter('formatDate')('1960-05-05')).toBe('05.05.1960');
    });

});

是的我知道,缓存的问题很难解决,但我对它失去了耐心:)

任何帮助将不胜感激,提前谢谢。

1 个答案:

答案 0 :(得分:0)

单独加载模块不应该是性能损失(你测量它吗?),但如果你想使用beforeAll(),你应该使用module.sharedInjector()。寻找&#34;使用beforeAll&#34;在this page