函数存根不能与sinon和mocha一起使用

时间:2018-11-08 18:15:47

标签: javascript mocha sinon

我正在尝试对我的测试套件的功能进行存根,并且当前它无法按预期运行。我不熟悉使用摩卡咖啡和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");
});

预先感谢

1 个答案:

答案 0 :(得分:0)

我通过挖苦自己找出了问题的答案。事实证明,我试图对分配给它正在引用的 anonymous 函数的变量进行存根。 Sinon无法找到此匿名函数,因此未对方法进行存根。要解决此问题,我必须将代码更改为:var productStatus = {prodStatus: function() {...} 然后像这样删除函数:

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

这很好用。希望这对某人有帮助!