2013-07-23 38 views
0
function testRef() { 
    if(document.referrer) { 
    return /isgoogle/.test(document.referrer) 
    } 
    return false; 
} 

讓我們假設一個函數如上。爲這樣一個函數編寫單元測試的好方法是什麼[因爲我們不能覆蓋document.referrer]。是否有任何其他好的方式來測試這樣的場景,如在javascript中的iframe,referrer,位置等內?我目前正在與qunit合作,這很不錯。但是沒有找到解決這種情況的出路。自定義函數的JavaScript單元測試

+0

向下選民:少的原因downvote是浪費時間.. – Tamil

回答

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) 
}