2

早上好

我正在尝试使用 karma 测试我们相对较大的 Angular 应用程序(或者至少从一些测试开始)。我让它运行时遇到了一些小麻烦,但现在想知道;karma 提供了一个 beforeEach 函数,它在每个it代码块之前被调用。使用 Angular 时,我(似乎是这样)module('app')每次都必须在执行一个测试用例之前调用。这不是一个全面的性能障碍吗?我的意思是设置整个模块,因此应用程序完全浪费性能,不是吗?

当我将 module('app') 调用放在 beforeAll() 函数中时,我收到一个 Error: [$injector:unpr] Unknown provider: CacheFactoryProvider <- CacheFactory

有人经历过吗?我在设置测试套件时做错了什么?

beforeAll() 的想法不是允许module('app')只进行一次昂贵的调用吗?

下面是我的一个简单测试,它在我发布它的状态下运行,所以我的问题只是关于多次调用模块的成本: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');
    });

});

是的,我知道,缓存的问题已经解决了,但我确实对它失去了耐心:)

任何帮助将不胜感激,在此先感谢。

4

1 回答 1

0

单独加载模块不应该对性能造成太大影响(你测量了吗?),但如果你想使用beforeAll(),你应该使用module.sharedInjector(). 在此页面中查找“使用 beforeAll” 。

于 2016-05-09T08:39:43.090 回答