使用Jasmine测试angular js指令的内联控制器方法?

时间:2015-09-29 11:20:53

标签: angularjs unit-testing angularjs-directive jasmine karma-runner

我在使用Jasmine和Karma覆盖指令中定义的内联控制器功能时遇到了困难。以下是该指令的代码。

myApp.directive("list", function() {
    return {
        restrict: "E",
        scope: {
            items: "=",
            click: "&onClick"
        },
        templateUrl: "directives/list.html",
        controller: function($scope, $routeParams) {
            $scope.selectItem = function(item) {
                $scope.click({
                    item: item
                });
            }
        }
    }     
});

单元测试用例如下:

describe('Directive:List', function () {

    var element, $scope, template, controller;
    beforeEach(inject(function ($rootScope, $injector, $compile, $templateCache, $routeParams) {
        $httpBackend = $injector.get('$httpBackend');
        $httpBackend.when("GET", "directives/list.html").respond({});
        $scope = $rootScope.$new();
        element = $compile('<list></list>')($scope);
        template = $templateCache.get('directives/list.html');
        $scope.$digest();
        controller = element.controller($scope, $routeParams);
    }));

    it('Test Case-1: should contain the template', function () {
        expect(element.html()).toMatch(template);
    });
}); 

在我的代码覆盖率报告中,未涵盖控制器功能。此外,我无法获取控制器实例并测试selectItem方法。

任何想法都会有很大的帮助!

0 个答案:

没有答案