也许你可以通过扩展原型来创建一个 Mock
// yourmock.js
var item = require("item")
exports = item
exports.parse = function() {
//Override method
}
编辑
一个例子。您有一个请求外部 API 的 NodeJS 应用程序。例如我们有 Stripe 来完成信用卡支付。此付款由 payment.js 对象完成,其中有一个 processPayment 方法。您希望 boolean 在回调中返回。
原始文件可能如下所示:
// payment.js
exports.processPayment = function(credicardNumber, cvc, expiration, callBack) {
// logic here, that requests the Stripe API
// A long time processing and requesting etc.
callback(err, boolean)
}
因为您希望在测试期间处理条带没有问题,所以您需要模拟此函数,以便可以在没有任何请求服务器延迟的情况下使用它。
您可以做的是使用相同的功能,但您接管了请求服务器的功能。因此,在真实环境中,您期望一个带有错误和布尔值的回调,这个模拟将为您提供。
// paymentMock.js
var payment = require('./payment');
// exports everything what normally is inside the payment.js functionality
exports = payment
// override the functionality that is requesting the stripe server
exports.processPayment = function(creditCardNumber, cvc, expirationDate, callBack) {
// now just return the callback withouth having any problems with requesting Stripe
callBack(null, true);
}
这对你来说可能更容易理解吗?