2016-08-19 32 views
0

好吧,所以這裏的細節:我有一個名爲FileA.js的文件。在FileA.js中,我有一個原型FileAObject.prototype,並具有相關函數funcAlpha()。因此,我們有這樣的事情:茉莉花和Spying/Mocking - JavaScript原型

文件= FILEA

function someFunction() { 
    SomeFunctionality... 
} 

function FileAObject() { 
    Object definition 
} 

FileAObject.prototype.funcAlpha = function() { 
    ... 
} 

我想窺探funcAlpha()。據我所知,典型的模擬看起來是這樣的:

var FILE_A = $.import('path.to.file.directory', 'FileA'); 

<rest of code here> 

spyOn(FILE_A, 'funcAlpha').andCallFake(function() { 
    return fakeResult; 
} 

<complete test> 

現在當我運行我的測試時,這是行不通的。因爲funcAlpha是FileAObject的一個屬性,並且(顯然)不是FileA,所以該調用將不起作用。但是,我不知道如何獲得間諜的目標。我對JavaScript很陌生,這是一個有用的但相當混亂的問題子集。任何幫助將不勝感激!

+0

您是否從模塊FileA導出您的'FileAObject'? –

+0

@HamletHakobyan你是什麼意思? –

+0

@HamletHakobyan我修改了上面的條目以更好地展示文件的結構 –

回答

0

好吧,這涉及到文件中包含多個對象類型。因爲FileAObject實際上是FileA.js文件的一個屬性,所以我們需要明確地調用它。

var FILE_A = $.import('path.to.file.directory', 'FileA'); 

<rest of code here> 

spyOn(FILE_A.FileAObject.prototype, 'funcAlpha').andCallFake(function() { 
    return fakeResult; 
} 

<complete test>