2016-05-09 47 views
1

早上好使用業力角緩存和beforeEach Fn

我試圖測試我們相對較大的角應用與業力(或至少開始一些測試)。我知道它有一些小麻煩,但現在想知道; karma提供了一個beforeEach函數,它在每個it代碼塊之前被調用。 使用角度時,我(似乎是這樣)每次執行一個測試用例之前都必須調用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'); 
    }); 

}); 

是的,我知道,這個問題與緩存解決醜陋,但我沒有失去它的耐心:)

任何幫助將不勝感激,在此先感謝。

回答

0

單獨加載模塊不應該是性能打擊的大問題(你測量過嗎?),但如果你想使用beforeAll(),你應該使用module.sharedInjector()。在this page中查找「使用beforeAll」。