Jasmine 和 Spying/Mocking - JavaScript 原型

Jasmine and Spying/Mocking - JavaScript Prototypes

好的,下面是细目:我有一个名为 FileA.js 的文件。在 FileA.js 中,我有一个原型 FileAObject.prototype,带有相关函数 funcAlpha()。因此我们有这样的东西:

文件 = 文件 A

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 的新手,这是一个有用但相当混乱的问题子集。任何帮助将不胜感激!

好吧,这归结为文件中包含多种对象类型的方式。因为 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>