Функция заглушки не работает с sinon и mocha - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь заглушить функции для моего набора тестов, и в настоящее время он работает не так, как ожидалось. Я новичок в использовании мокко и синона и ищу направление, как сделать эту работу:

Вот фрагмент тестируемого кода, который можно найти в файле 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 голосов
/ 09 ноября 2018

Я выяснил ответ на свой вопрос, покопавшись сам. Оказывается, я пытаюсь заглушить переменную, назначенную для анонимной функции, на которую она ссылается. Синон не может найти эту анонимную функцию и поэтому не заглушает метод. Чтобы это исправить, мне пришлось изменить код так: var productStatus = {prodStatus: function() {...} а затем заглушить функции так:

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

Это отлично работает. Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...