function testRef() {
if(document.referrer) {
return /isgoogle/.test(document.referrer)
}
return false;
}
让我们假设一个如上所述的功能。为这样的函数编写单元测试的好方法是什么[因为我们无法覆盖document.referrer]。有没有其他好的方法来测试这样的场景,比如在javascript中位于iframe,引用者,位置等内?我目前正在使用qunit这是非常好的。但是没有在框架中为这种情况找到出路。
答案 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)
}