Sinon Stub 在 mocha 中不起作用
Sinon Stub is not working in mocha
我正在尝试使用 sinon stub 来模拟一个函数,但它没有按预期工作,有人可以解释一下如何修复它吗
在其中一个文件 customFunc.js 中,我有类似
的功能
function test() {
return 'working good';
}
exports.test = test;
function testFunction(data, callback) {
var sample = test();
if(sample === 'test') {
return callback(null, sample);
}
else {
return callback(null, 'not working');
}
}
exports.testFunction = testFunction;
并且我正在尝试使用 mocha 测试 testFunction 并且我尝试像这样使用 sinon 来存根测试函数
it('testing sinon', function(done) {
var stub = sinon.stub(customFunc,'test').returns('working');
customFunc.testFunction('test', function(err, decodedPayload) {
decodedPayload.should.equal('working');
done();
});
});
sinon 是否有效我应该总是得到 'working' 作为输出但它没有发生,请告诉我如何模拟 test() 函数。
你的 sinon 存根看起来没问题,但你在测试中所期望的是不正确的。如果'test'函数returns'working'(因为存根),那么会发生以下情况:
var sample = test(); // sample = 'working'
if(sample === 'test') { // will evaluate false
return callback(null, sample);
}
else {
return callback(null, 'not working'); // will return 'not working'
}
所以这自然会评估为 false。
decodedPayload.should.equal('working');
我正在尝试使用 sinon stub 来模拟一个函数,但它没有按预期工作,有人可以解释一下如何修复它吗
在其中一个文件 customFunc.js 中,我有类似
的功能function test() {
return 'working good';
}
exports.test = test;
function testFunction(data, callback) {
var sample = test();
if(sample === 'test') {
return callback(null, sample);
}
else {
return callback(null, 'not working');
}
}
exports.testFunction = testFunction;
并且我正在尝试使用 mocha 测试 testFunction 并且我尝试像这样使用 sinon 来存根测试函数
it('testing sinon', function(done) {
var stub = sinon.stub(customFunc,'test').returns('working');
customFunc.testFunction('test', function(err, decodedPayload) {
decodedPayload.should.equal('working');
done();
});
});
sinon 是否有效我应该总是得到 'working' 作为输出但它没有发生,请告诉我如何模拟 test() 函数。
你的 sinon 存根看起来没问题,但你在测试中所期望的是不正确的。如果'test'函数returns'working'(因为存根),那么会发生以下情况:
var sample = test(); // sample = 'working'
if(sample === 'test') { // will evaluate false
return callback(null, sample);
}
else {
return callback(null, 'not working'); // will return 'not working'
}
所以这自然会评估为 false。
decodedPayload.should.equal('working');