Карма-тест: scope.$on('$destroy') никогда не вызывается, когда элемент перемещается в элемент body

У меня есть директива, которая перемещает элемент из любого места, где он должен быть дочерним элементом элемента body.

.directive('prependToBody', function () {
    return function (scope, element, attrs) {
      angular.element(document).find('body').prepend(element);

      scope.$on('$destroy', function () {
        console.log("prependToBody DESTROY");
        element.remove();
      });
    }
});

Это работает, как и ожидалось, в приложении, но когда я использую его в модульном тесте Karma (Jasmine), событие $destroy никогда не запускается. Почему $destroy не срабатывает в модульном тесте?


person Gil Birman    schedule 13.08.2014    source источник
comment
Вы не вызываете scope.$destroy()?   -  person PSL    schedule 13.08.2014
comment
нет, я не вызываю scope.$destroy(), но если я закомментирую строку, что prepends в теле, это сработает.   -  person Gil Birman    schedule 13.08.2014
comment
Вы используете PhantomJS или настоящий браузер для запуска тестов? Для отладки этой проблемы может быть полезно запустить тесты в другом браузере.   -  person Sunil D.    schedule 13.08.2014
comment
не могли бы вы также показать свою спецификацию?   -  person Narek Mamikonyan    schedule 13.08.2014
comment
Я использовал PhantomJS и Chrome. Это происходит в обоих.   -  person Gil Birman    schedule 14.08.2014
comment
возможный дубликат тестирования элементов DOM с помощью phantomjs/casperjs   -  person Paul Sweatte    schedule 16.01.2015
comment
Вы действительно читали этот вопрос @PaulSweatte? Я не вижу никакого сходства, за исключением того факта, что они оба связаны с тестированием JS, но они даже не относятся к одному и тому же тестировщику или фреймворку.   -  person Gil Birman    schedule 16.01.2015