gpt4 book ai didi

javascript - 函数 stub 不适用于 sinon 和 mocha

转载 作者:行者123 更新时间:2023-11-30 20:02:37 24 4
gpt4 key购买 nike

我正在尝试为我的测试套件 stub 函数,但它目前没有按预期工作。我是使用 mocha 和 sinon 的新手,正在寻找如何进行这项工作的方向:

这是正在测试的代码片段,可以在 functions/purchaseOrder.js 中找到。 AccountStatus、creditStatus 和 productStatus 是文件中的本地函数:

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");
});

提前致谢

最佳答案

我自己通过一些挖掘找到了问题的答案。事实证明,我正在尝试将分配给它所引用的 anonymous 函数的变量 stub 。 Sinon 无法找到此匿名函数,因此不会删除该方法。为了解决这个问题,我必须将代码更改为:var productStatus = {prodStatus: function() {...}然后像这样 stub 函数:

var stub = sinon.stub(testFunctions.productStatus, "prodStatus"); 
stub.onCall(0).returns("available");

这非常有效。希望这对某人有帮助!

关于javascript - 函数 stub 不适用于 sinon 和 mocha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com