自定义函数的JavaScript单元测试

时间:2013-07-23 07:27:31

标签: javascript unit-testing qunit

function testRef() {
  if(document.referrer) {
     return /isgoogle/.test(document.referrer)
  }
  return false;
}

让我们假设一个如上所述的功能。为这样的函数编写单元测试的好方法是什么[因为我们无法覆盖document.referrer]。有没有其他好的方法来测试这样的场景,比如在javascript中位于iframe,引用者,位置等内?我目前正在使用qunit这是非常好的。但是没有在框架中为这种情况找到出路。

1 个答案:

答案 0 :(得分:2)

最简单的方法是将算法与依赖关系分开:

function testRefImpl(doc) {
  if(doc.referrer) {
     return /isgoogle/.test(doc.referrer)
  }
  return false;
}

// unit test
assertFalse(testRefImpl({referer: "abc"}))
assertTrue(testRefImpl({referer: "isgoogle"}))

// dependency declaration module
// so primitive, that there is no point to unit test it.
function testRef() {
  return testRefImpl(document)
}