0
我試圖測試類似於下面用茉莉花私有方法導致茉莉花測試失敗
closure.respond = function (value){
if(value)
{
thisIsAPrivateMethod();
}
thisIsAPublicMethod();
}
我的測試看起來像這樣
it('will display the calendar widget when value is true', function(){
value=true
closure.respond(value);
expect(closure.thisIsAPublicMethod).toHaveBeenCalled();
)
})
每當我運行測試我的一個函數在jasmine測試運行器中得到一個異常,指出在private函數內部調用的方法不存在。 (對象#沒有方法'methodName' )
我不關心私有函數的內部工作原理,我怎麼能忽略這個調用?
我可以忽略它嗎?顯然,我不能/不應該對它進行監視,因爲它是私人的。 任何方向將不勝感激。
感謝
同意。我的問題是,在測試closure.respond時,它在內部調用一個私有方法,然後拋出一個錯誤,因爲它有一個尚未聲明的依賴關係。我需要走多遠的調用堆棧? – autofunk 2013-04-11 14:41:43
不知道我是否理解這個問題,但爲什麼你有一個未聲明的依賴關係。你應該模擬/存根依賴關係,並將它注入到閉包中。或者,如果它是一個全球性的只是嘲笑它就像這個'jasmine.spy(window,'dependency')。並返回(someMockImplenetaion)' – 2013-04-11 15:03:41
問題是,我試圖不關心自己在私人函數內的實現,但是,爲了讓這個測試能夠正常工作,我確實需要知道私有函數在測試期間執行的是什麼,我擔心的是我看起來會出現更多的依賴關係。我會最終到達那裏。感謝您的洞察力。 – autofunk 2013-04-11 16:08:15