如何使用 jasmine-node 监视节点模块中的私有函数?
How do I spyOn private functions in a node module using jasmine-node?
app.js
function _private() {
console.log( '_private' );
}
function public() {
console.log( 'public' );
_private();
}
module.exports = {
public: public,
_private: _private
};
spec/appSpec.js
describe( 'test', function() {
it( 'will spy on _private', function() {
var app = require( '../app' );
spyOn( app, '_private' );
app.public();
expect( app._private ).toHaveBeenCalled();
});
});
_private()
被调用,但是间谍不起作用,测试失败。
所以正如问题所问,我如何连接间谍,以便它知道 _private()
被调用了?或者这是不可能的?
您可以用 this
调用 _private
否则函数未定义。试试这个:
function public() {
console.log( 'public' );
this._private();
}
app.js
function _private() {
console.log( '_private' );
}
function public() {
console.log( 'public' );
_private();
}
module.exports = {
public: public,
_private: _private
};
spec/appSpec.js
describe( 'test', function() {
it( 'will spy on _private', function() {
var app = require( '../app' );
spyOn( app, '_private' );
app.public();
expect( app._private ).toHaveBeenCalled();
});
});
_private()
被调用,但是间谍不起作用,测试失败。
所以正如问题所问,我如何连接间谍,以便它知道 _private()
被调用了?或者这是不可能的?
您可以用 this
调用 _private
否则函数未定义。试试这个:
function public() {
console.log( 'public' );
this._private();
}