Как добавить div в DOM в модульные тесты AngularJS?

Я использую следующий код в директиве для размещения подсказки

var bodyoffset = document.querySelector(".smallcontainer-content").getBoundingClientRect();
var width = elm.width();
if(bodyoffset != undefined){
    var tooltipDiv = document.querySelector(".tooltip");
    angular.element(tooltipDiv).css("top", offset.top-bodyoffset.top+"px");
    angular.element(tooltipDiv).css("left", offset.left-bodyoffset.left+width+5+"px");
}

Это не работает в unit test, так как div, в котором находится "smallcontainer" класса, не существует. Как я могу убедиться, что div создан в unit test, чтобы я мог проверить все мои функции?

Ответ 1

Вот как мне удалось это сделать:

beforeEach(inject(
    ['$compile','$rootScope', function(_$compile_) {
        var html = '<div class="smallcontainer-content"></div>';
        angular.element(document.body).append(html);
        elm = angular.element('<form name="form"><input name="password" id="passwordInput" data-ng-model="password" size="25" type="password" maxlength="20" tabindex="1" autofocus  data-my-password-check></form>');
        $compile(elm)($rootScope);
        form = $rootScope.form;

    }]
));

Важная часть здесь, которая добавляет html к документу, это angular.element(). append().

Я нашел это в примере кода промежуточного тестирования http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html#testing-filters