Javascript 功能存根不适用于sinon和mocha
我正在尝试为我的测试套件存根函数,但它目前没有按预期工作。我对使用摩卡和西农还不熟悉,我正在寻找如何使其发挥作用的方向: 下面是正在测试的代码片段,可以在functions/purchaseOrder.js中找到。AccountStatus、creditStatus和productStatus是文件中的本地函数:Javascript 功能存根不适用于sinon和mocha,javascript,mocha.js,sinon,Javascript,Mocha.js,Sinon,我正在尝试为我的测试套件存根函数,但它目前没有按预期工作。我对使用摩卡和西农还不熟悉,我正在寻找如何使其发挥作用的方向: 下面是正在测试的代码片段,可以在functions/purchaseOrder.js中找到。AccountStatus、creditStatus和productStatus是文件中的本地函数: var orderHandling=function(clientAccount ,product,inventory,inventoryThreshold,creditCheckMo
var orderHandling=function(clientAccount ,product,inventory,inventoryThreshold,creditCheckMode){
var aStautus=AccountStatus(clientAccount);
var cStatus=creditStatus(clientAccount, creditCheckMode);
var pStatus=productStatus(product,inventory,inventoryThreshold);
...more
}
这就是我试图测试它的方式:
import testFunctions = require('./functions/purchaseOrder.js');
beforeEach(function() {
stub=sinon.stub(testFunctions, "AccountStatus");
stub1=sinon.stub(testFunctions, "productStatus");
stub2=sinon.stub(testFunctions, "creditStatus"); // stub 'calPoints' function
})
it('Initial Test', function() {
var clientAccount = {
age: 2,
balance: 500,
creditScore: 50
}
stub.onCall(0).returns("very good");
stub1.onCall(0).returns("available");
stub2.onCall(0).returns("good");
var creditCheckMode = 'restricted';
var product = "productname"
var inventory = [{
name: "hello",
productQuantity: 578
}]
var inventoryThreshold = 500
assert.equal(testFunctions.orderHandling(clientAccount, product, inventory, inventoryThreshold, creditCheckMode), "accepted");
});
提前谢谢我已经通过自己的挖掘找到了问题的答案。结果是,我试图剔除分配给它所引用的匿名函数的变量。Sinon无法找到此匿名函数,因此没有删除该方法。要解决这个问题,我必须将代码更改为:
var-productStatus={prodStatus:function(){…}
然后删除如下函数:
var stub = sinon.stub(testFunctions.productStatus, "prodStatus");
stub.onCall(0).returns("available");
这很好用。希望这对别人有帮助