簡體   English   中英

函數存根不適用於 sinon 和 mocha

[英]Function stub not working with sinon and mocha

我正在嘗試為我的測試套件存根函數,但它目前沒有按預期工作。 我是使用 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");
});

提前致謝

我已經通過自己的一些挖掘找到了我的問題的答案。 事實證明,我試圖刪除分配給它引用的匿名函數的變量。 Sinon 無法找到這個匿名函數,因此不會剔除該方法。 為了解決這個問題,我必須將代碼更改為: var productStatus = {prodStatus: function() {...}然后像這樣刪除函數:

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

這完美地工作。 希望這可以幫助某人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM