单元测试使用ngInclude w / QUnit的AngularJS指令时出错

时间:2014-04-03 18:59:03

标签: javascript angularjs unit-testing qunit

我目前正在尝试使用QUnit为我的Angular指令设置单元测试。在我尝试使用ngInclude指令之前,一切都很顺利。在测试中编译我的指令时,我现在收到以下错误:

  

未知提供商:$ rootElementProvider< - $ rootElement< - $ location< -   $ anchorScroll< - ngIncludeDirective

只需更改我的指令模板:

<table>
    <tr data-ng-repeat="row in rows">
        <td data-ng-repeat="column in row.columns">{{ column.data }}</td>
    </tr>
</table>

要:

<table>
    <tr data-ng-repeat="row in rows">
        <td data-ng-repeat="column in row.columns">{{ column.data }}</td>
    </tr>
    <tr data-ng-include="'footerRow.html'" />
</table>

足以启动错误。最简单的单元测试代码形式是:

QUnit.test('Directive renders something', function() {
    var $injector = angular.injector(['ng', 'myModule']);
    var $compile = this.$injector.get('$compile');
    var $scope = $injector.get('$rootScope').$new();
    // Build up the scope, call $compile, and get the error
    var element = $compile('<div data-my-directive="" />')($scope);
});

我猜我错过了一些简单而明显的东西,但我一直盯着看太久了。请随时证明我是对的。

1 个答案:

答案 0 :(得分:0)

我认为如果你把它放到一个JSFiddle中可能会有所帮助 - 你可能会看到这里发生了什么。

尝试更改此内容:

<tr data-ng-include="'footerRow.html'" />

到此:

<tr data-ng-include src="'footerRow.html'" />