Node.js 如何在内部调用的模块中存根/监视外部方法?

Node.js 如何在内部调用的模块中存根/监视外部方法?,node.js,sinon,Node.js,Sinon,是否可以通过存根“isUnique”方法来更改“create”方法的行为 简言之,没有 您的模块包含两个对isUnique函数的引用:一个来自函数声明本身,另一个分配给exports.isUnique create函数正在使用第一个函数,而Sinon正在使用第二个函数 要调用存根,create需要使用被存根的引用: var entity = require("./entity"); var sinon = require("sinon"); var assert = require("asser

是否可以通过存根“isUnique”方法来更改“create”方法的行为

简言之,没有

您的模块包含两个对
isUnique
函数的引用:一个来自函数声明本身,另一个分配给
exports.isUnique

create
函数正在使用第一个函数,而Sinon正在使用第二个函数

要调用存根,
create
需要使用被存根的引用:

var entity = require("./entity");
var sinon = require("sinon");
var assert = require("assert");

var stub = sinon.stub(entity, "isUnique", function (name) { return false });

entity.create("test");
stub.restore();
assert(stub.calledOnce, true);

或者,您也可以使用类似的模块。

好的。这也是我一直认为正在发生的事情。谢谢你的意见。实体模块为“外部”,因此无法修改。我得检查一下电路。
var entity = require("./entity");
var sinon = require("sinon");
var assert = require("assert");

var stub = sinon.stub(entity, "isUnique", function (name) { return false });

entity.create("test");
stub.restore();
assert(stub.calledOnce, true);
if (exports.isUnique(name)) { return console.log(name); }
// `this.isUnique` also works, because `this` === `module.exports`