控制器中的document.getElementById('#elementId')的Angularjs单元测试失败

时间:2018-07-16 01:56:32

标签: angularjs unit-testing karma-jasmine

控制器代码:

var element = document.getElementById('#elementId');

element.style.display = "block";

执行单元测试(在控制器中执行上述代码)时,它失败并显示以下错误:

  

TypeError:无法读取null的属性“样式”   ChildScope。$ scope.openTab

如何在单元测试中获取文档/ DOM?

1 个答案:

答案 0 :(得分:1)

您可以尝试在以下代码的帮助下创建模拟文档元素:

var mockedDocElement = document.createElement('div');
document.getElementById = jasmine.createSpy('*<<yourElementId>>*').andReturn(mockedDocElement );

通过这种方式,每次调用 document.getElementById 时,都会返回一个虚拟元素,因此,您可以在测试方法中继续进行操作,而不会出现任何此类异常。