0
在另一個令人興奮的「你在做什麼,tbm?」的安裝中,我有一個測試(肯定是在[變化]之前但現在通過)由於儘管所有努力都證明了其他方面,但仍然存在明顯的階級。即使班級不存在,角度hasClass也會返回true
上下文:
加入者的列表被顯示,其中的每一個可以被分級或評分。在參賽者的分區內,相關(按類別)參賽者以摘要形式展示。直到參賽者本身通過自己的div進行評分後,纔會顯示摘要參賽者的評分。該測試驗證了這種行爲。
測試:
it('related items are hidden until scored', function() {
expect(judgeService.entrants[2].rating.score).toBe(0);
var other = angular.element(element.find('.competition')[0]);
var score_container = other.find('div > div');
expect(score_container.hasClass('ng-hide')).toBe(true);
judgeService.entrants[2].rating.score = 3;
scope.$digest();
// We'll refer to this later
console.log('HTML: ' + other.html());
console.log('CLASS: ' + score_container.attr('class'));
// failure here
expect(score_container.hasClass('ng-hide')).toBe(false);
});
HTML:
<div class="competition"
ng-repeat="other in item.related">
<div>
{{ other.name }}<br/>
<!-- this becomes the div > div in the test -->
<score-block item="other" ng-show="other.rating.score"></score-block>
</div>
</div>
輸出:
LOG: 'HTML:
<div class="ng-binding">
Andres<br>
<div class="ng-isolate-scope" ng-class="{error: vm.error}" item="other" ng-show="other.rating.score">
[ skippy bits ]'
LOG: 'CLASS: ng-isolate-scope'
所以,是的,這個類不存在的元素..所以爲什麼hasClass( )認爲它是?
[變化]
每混帳平分,這導致測試失敗開始的變化是一個不相關的指令。但即使變化是直接相關的,我也沒有看到hasClass()如何將每個類都報告爲缺失。
更新:
通過jQuery代碼挖掘(hasClass()如果使用jQuery的安裝)似乎element.hasClass(「富」)將於如果任何元素的子元素有類「返回true富「,即使元素本身沒有。 WTF,jQuery?