Ваши директивы уже скомпилированы, и, поскольку у вас есть replace: true
в директиве bar
, вы больше не найдете bar
в DOM.Вы можете увидеть это, посмотрев на element.html()
, который в вашем случае показал бы что-то вроде этого:
<div><div ng-transclude=""><div class="ng-scope"></div></div></div>
Если вы удалите replace: true
, ваш тест будет работать.
В противном случае, когдаjQuery не загружен, jqLite ограничен, и его метод find
может искать только имена тегов.Поэтому я попытался быстро найти вашу область видимости так:
var barScope = element.find("div").eq(2).scope()
У вас есть загруженный jQuery в вашем приложении?Если это так, вы можете загрузить его в свой тест, а затем добавить дополнительную информацию к элементу bar
, например:
var element = $compile('<div foo><bar id="bar"></bar></div>')($scope);
Затем вы можете найти его как:
var barScope = element.find('#bar').scope();