2014-10-09 88 views
0

這裏角指令編寫測試指令:與動態模板

app.directive('templates',function() { 
return { 
    restrict:'E', 
    templateUrl: function(s,e) { 
     switch (e.template) { 
      case 'temp1':     
       return 'temp1.html'; 
      case 'temp2': 
       return 'temp1.htm2'; 
      default: 
       // do nothing... ; 
     } 
    } 
}; 
}); 

我能得到它在我的測試,以編譯,但我不知道如何測試是否正確的模板被稱爲

回答

0

這裏沒有太多要測試的東西。但作爲一種感覺良好的測試,您可以將模板加載到緩存中,並在特定元素已被渲染或不作爲感覺良好的測試時進行測試。

例子: -

describe('templates', function() { 
    beforeEach(inject(function ($rootScope, $templateCache, $compile) { 
     // Set an arbitrary template to test 
     $templateCache.put('temp1.html', '<div class="test">Hello</div>'); 
     element = angular.element("<templates template='temp1'></templates>"); 
     $compile(element)(scope); 
     $rootScope.$digest(); 
    })); 


    it('Should load template', function() { 
     expect(element.find('.test').length).toEqual(1); //Test if element has loaded template properly 
     expect(element.find('.test').text()).toEqual("Hello"); 
    }); 

Demo

在不同的注意你的指令可以打破,如果沒有提供template,它需要從templateurl函數返回一個模板。你也可以使這個簡單的指令更通用。

.directive('templates',function() { 
return { 
    restrict:'E', 
    templateUrl: function(e,attr) { 
     return attr.template + ".html" 
    }; 
}); 

在這裏沒有什麼可以測試的,因爲您最終只能測試angular的templateUrl函數評估。

+0

謝謝。我主要是難以將模板納入測試 – 2014-10-09 20:41:29