mocha / sinon存根恢复无法正常工作

问题描述 投票:1回答:1

我的第一个节点测试脚本。我正在使用Mocha和Sinon来测试最终发送到队列的函数。节点v8.1.3,Mocha 5.0.2,sinon 4.4.2。

var assert = require('assert');
var sinon = require('sinon');
var uut = require('../util');
var stub;

describe('processWantedItemToQueue', function() {
    beforeEach(function() {
      stub = sinon.stub(uut, 'processWantedItemToQueue').returns(true);
    });

    afterEach(function() {
      uut.processWantedItemToQueue.restore();
    });

    it('should not push the item to the queue', function() {
      assert.equal(uut.processWantedItemToValidQueue("a", "q1"), false);
    });

    it('should push the item to the queue', function() {
      assert.equal(uut.processWantedItemToValidQueue("a", "aws"), true);
    });
});

这是我的输出:

> mocha
  processWantedItemToQueue
ignoring queue q1
    ✓ should not push the item to the queue
    1) should push the item to the queue


  1 passing (34ms)
  1 failing

  1) processWantedItemToQueue
       should push the item to the queue:
     ReferenceError: processWantedItemToQueue is not defined
      at Object.processWantedItemToValidQueue (util.js:36:20)
      at Context.<anonymous> (test/test.js:20:24)

我误解了存根的一些东西。为什么我的第二次测试找不到存根?

我的util.js看起来像这样:

module.exports = {
  processWantedItem: function(item) {
  ...
  },
  processWantedItemToQueue: function(item, queue) {
  ...
  },
  processWantedItemToValidQueue: function(item, queue) {
  ...
  }
}
node.js mocha sinon
1个回答
1
投票

看起来这不是你的存根的问题,而是你的processWantedItemToValidQueue实现的问题;在第二种情况下你最有可能只是试图调用processWantedItemToQueue,但是你定义它的processWantedItemToQueue将不在另一个函数的范围内。但是,您必须展示processWantedItemToValidQueue的实现。

© www.soinside.com 2019 - 2024. All rights reserved.