微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单元测试 – 如何在AngularJS单元测试中向DOM添加div?

我在一个指令中使用以下代码来放置一个工具提示

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");
}

这不能在单元测试中工作,因为类“smallcontainer”所在的div不存在.我如何确保在单元测试中创建div,以便我可以测试我的所有功能

解决方法

这是我如何设法做到的:

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的中途测试代码示例中发现了这一点

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐