2015-10-19 52 views
0

我想测试我的角度控制器及其模板。但是没有找到加载模板的方法。即使我正在编译我的模板与控制器的范围也无法找到模板中的元素。单元测试角度控制器以及相应的模板

我的控制器:

angular.module("myapp").controller("controller", ['$scope', controller]); 
     function controller($scope) { 
    //Code 
    } 

模板:

<html><body> 
    <p id="test">This is test content</p> 
    </body></html> 

我的测试用例:

it("Testing ui elements", function(){ 

       var controller = createController(); 

       expect($scope.loading).toBeFalsy(); 

       var element = $compile(listTemplate)($scope); 
       $scope.$digest(); 
       console.log(element.find('#test').html()); 
      }); 

输出:

LOG: undefined 
+0

我相信$ compile函数只用于指令。它听起来像你想要的是端到端测试。查看有关该主题的Angualr Docs。 [E2E测试](https://docs.angularjs.org/guide/e2e-testing) –

回答

0

我改变了我的创建控制器方法如下。

createController = function() { 
      var element = angular.element("<div id='controller' ng-controller='controller'></div>"); 
      element.append(listTemplate); 
      $compile(element)($scope); 
      angular.element('body').append(element); 
      $scope = element.scope(); 
     }; 

现在我能够通过Id获取元素作为$('#test')。html();