我正在为控制器编写单元测试,其中工作流中的某个位置检查DOM的特定属性。目前我只是通过
模拟方法spyOn(controller, 'methodChecksDom').return('value that I want').
工作正常,但如何在不模仿该方法的情况下进行测试。我尝试过使用$ document并实际插入dom via
$document.find('body').append('<div>...</div>')
但我的测试中出现以下错误:
错误:肮脏的测试!在文件正文中发现的DOM残留物:...... 在错误(本机)
这样做的正确方法是什么。在不模仿的情况下测试方法。非常感谢!
答案 0 :(得分:1)
您应该使用自定义指令执行任何DOM操作或添加行为。
http://docs.angularjs.org/guide/directive
angular.module("myApp",[]).directive("mydirective",function(){
return {
link: function(scope,iElem,iAttrs) {
//Do stuff per instance here
}
}
})
答案 1 :(得分:1)
如果您在此处直接测试DOM,则需要在测试后清理插入的元素。这就是您收到错误的原因 - 您没有清理通过$document
插入的内容。
话虽这么说,你真的应该不如读取控制器内的DOM那么多。