单元测试控制器,该控制器调用检查DOM属性的方法

时间:2014-01-05 00:19:48

标签: unit-testing angularjs

我正在为控制器编写单元测试,其中工作流中的某个位置检查DOM的特定属性。目前我只是通过

模拟方法
spyOn(controller, 'methodChecksDom').return('value that I want').

工作正常,但如何在不模仿该方法的情况下进行测试。我尝试过使用$ document并实际插入dom via

$document.find('body').append('<div>...</div>')

但我的测试中出现以下错误:

错误:肮脏的测试!在文件正文中发现的DOM残留物:......         在错误(本机)

这样做的正确方法是什么。在不模仿的情况下测试方法。非常感谢!

2 个答案:

答案 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那么多。