2016-08-19 102 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>