我的第一个 Node 测试脚本。我正在使用 Mocha 和 Sinon 来测试最终发送到队列的函数。 Node 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)
我对 stub 有一些误解。为什么我的第二次测试没有找到 stub ?
我的 util.js 看起来像这样:
module.exports = {
processWantedItem: function(item) {
...
},
processWantedItemToQueue: function(item, queue) {
...
},
processWantedItemToValidQueue: function(item, queue) {
...
}
}
最佳答案
看来这不是您的 stub 的问题,而是您的 processWantedItemToValidQueue
的实现的问题;最有可能的是,您实际上只是在第二种情况下尝试调用 processWantedItemToQueue
,但是您定义的 processWantedItemToQueue
不会在另一个函数的范围内。不过,可以肯定的是,您必须展示 processWantedItemToValidQueue
的实现。
关于node.js - mocha/sinon stub 恢复不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135090/