2

おはようございます

カルマを使用して比較的大きな角度のアプリをテストしようとしています (または、少なくともいくつかのテストから始めます)。いくつかのマイナーなトラブルで実行できましたが、今疑問に思っています。itkarma は、すべてのコード ブロックの前に呼び出される beforeEach 関数を提供します。module('app')angularを使用する場合、 1つのテストケースを実行する前に毎回呼び出す必要があります(そうです) 。それは完全なパフォーマンスブロッカーではありませんか? モジュール全体をセットアップすることを意味するため、アプリはパフォーマンスを完全に無駄にしていますか?

module('app') 呼び出しを beforeAll() 関数に配置すると、 Error: [$injector:unpr] Unknown provider: CacheFactoryProvider <- CacheFactory

誰かがそれを経験しましたか?テストスイートの設定が間違っているのは何ですか?

beforeAll() のアイデアは、コストのかかる呼び出しをmodule('app')一度だけ行うことを許可するものではありませんか?

以下は、投稿した状態で実行される簡単なテストの 1 つです。したがって、私の質問は、単にモジュールを複数回呼び出すコストについてです: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 に答える