2015-10-15 74 views
1

我創建一個茉莉測試這行代碼的對象:茉莉 - 類型錯誤:「未定義」不是(評價「win.focus」)

var win = $window.open('url', '_blank', getBrowserSize()); 
win.focus(); 

,我試圖通過這對模擬它

$window: {open: _.noop, focus: _.noop} 

但是當我運行測試它給我這個錯誤

TypeError: 'undefined' is not an object (evaluating 'win.focus') 

有人可以幫助我如何嘲笑的$窗口對焦功能?

回答

1

_.noop沒有一個返回值,以便勝利實際上是不確定的。

你可能想嘗試這樣的:

var $window = {open: function() { return this }, focus: _.noop} 
var win = $window.open('url', '_blank', getBrowserSize()); 
win.focus(); 
+0

謝謝!這一個工程:)真棒! – james

+0

沒問題。很高興有幫助。 –

0

_.noop什麼都不做,並且什麼都不返回。所以當你做var win = $window.open('url', '_blank', getBrowserSize());時,win是未定義的。

0

您的模擬使用noopopen方法,它將undefined返回到win變量。使用返回另一個模擬的函數,例如如:

$window: { 
    open: jasmine.createSpy('$window.open'), 
    focus: _.noop 
} 

$window.open.and.returnValue({ 
    // this is the second mock 
    focus: jasmine.createSpy('focus') 
}); 
相關問題