【发布时间】:2014-02-19 10:13:14
【问题描述】:
我有一个角度指令的单元测试。该指令在其模板内有一个ng-repeat,它绑定到指令控制器内的一个数组。当控制器中的方法被调用时,数组会发生变化(这个方法实际上是由一个子指令调用的,比如addMe())。
这在“现实生活”中效果很好,但在 Jasmine 单元测试中却不行。我可以在调试器中看到,所有内容都被调用并且数组具有正确的内容,但不知何故 ng-repeat 不会更新。我什至尝试在更改数组后在控制器内部调用$scope.$digest(),但这也不起作用。
有什么帮助吗?
丹尼尔
模板的相关部分是:
<div class="step-wizard-header">
<div class="step"
ng-repeat="title in titles"
ng-click="selectPage($index, 0)"
ng-class="{ active: currentIndex == $index, done: currentIndex > $index }">
<span class="number">
{{$index + 1}}
</span>
<span class="title">
{{title.text}}
</span>
<div class="substep-holder"
ng-show="currentIndex == $index">
<div class="substep"
ng-repeat="sub in title.subs"
ng-click="selectPage($parent.$index, $index); $event.stopPropagation()"
ng-class="{ active: currentSubIndex == $index, done: currentSubIndex > $index }">
{{sub.text}}
</div>
</div>
<div class="right-arrow"
ng-style="{ 'z-index': (titles.length - $index) }">
</div>
</div>
</div>
【问题讨论】:
-
你能至少和我们分享一些html吗?您可能在标签中有一个不适用于 ng-repeat 的属性
-
就像我说的,它工作正常,除了在单元测试中。
-
好的。 . . 抱歉,自 2010 年以来我没有做过任何活跃的 tdd,也没有开发过任何测试
-
我们可能需要您的测试代码来帮助您;)
-
我不想分享我自己的代码,而是指向this,这正是我想要的,但在我的环境中也不起作用。也许我的设置存在一般性问题。
标签: angularjs unit-testing jasmine directive ng-repeat