Mocha sinon.spy 总是显示函数调用 0 次
Mocha sinon.spy always showing function call 0 times
我是 mocha/chai 的新手。我正在尝试为以下场景编写单元测试用例。我想测试 "callchildfunc" 和 "childfunc2" 在调用 "parent()" 函数时是否被调用。
我已经阅读了基础知识,我的理解是,如果您正在监视任何函数,那么只需在该函数上放置 assert 以检查该函数是否被调用。在上面的脚本文件中意味着如果我将监视 "childfunc2" 和 "callchildfunc" 函数,那么我不需要在测试文件中调用这里,因为它已经在父函数下的脚本文件中调用。理解有误请指正
这是我的 script.js 文件
// script.js
function childfunc2(){
console.log("child function without return");
}
function callchildfunc(var1, var2){
return var1 + var2;
}
function parent(x){
var getreturnval = callchildfunc(x, 1);
console.log(getreturnval);
childfunc2();
}
这是我的测试文件。
//scenario 1
describe('Test for parent() function ', function(){
it('should make parent call ', function(){
var spy1 = sinon.spy(window, 'callchildfunc');
var spy2 = sinon.spy(window, 'childfunc2');
parent(2);
expect(spy1).to.have.been.called();
expect(spy2).to.have.been.called();
// or
sinon.assert.calledOnce(spy1);
sinon.assert.calledOnce(spy1);
});
});
在 运行 测试之后,我总是收到此错误。
AssertError: expected childfunc2 to be called once but was called 0 times
此外,如果我更改测试文件并调用间谍函数,它就会起作用。
var spy1 = sinon.spy(window, 'callchildfunc');
var spy2 = sinon.spy(window, 'childfunc2');
parent(2);
// After addding these below 2 lines.
window.childfunc2();
window.callchildfunc();
有什么帮助吗?
// Script.js
module.exports= {
childfunc2:function(){
console.log("child function without return");
},
callchildfunc:function(var1, var2){
return var1 + var2;
},
parent:function(x){
var getreturnval = this.callchildfunc(x, 1);
console.log(getreturnval);
this.childfunc2();
}
};
// Test.js
var sinon= require('sinon'), expect=require('chai').expect
var r= require('./functests')
describe('Test for parent() function ', function(){
it('should make parent call ', function(){
var spy1 = sinon.spy(r, 'callchildfunc');
var spy2 = sinon.spy(r, 'childfunc2');
r.parent(2);
// expect(spy1).to.have.been.called();
// expect(spy2).to.have.been.called();
// or
sinon.assert.calledOnce(spy1);
sinon.assert.calledOnce(spy1);
});
});
//截图
我是 mocha/chai 的新手。我正在尝试为以下场景编写单元测试用例。我想测试 "callchildfunc" 和 "childfunc2" 在调用 "parent()" 函数时是否被调用。
我已经阅读了基础知识,我的理解是,如果您正在监视任何函数,那么只需在该函数上放置 assert 以检查该函数是否被调用。在上面的脚本文件中意味着如果我将监视 "childfunc2" 和 "callchildfunc" 函数,那么我不需要在测试文件中调用这里,因为它已经在父函数下的脚本文件中调用。理解有误请指正
这是我的 script.js 文件
// script.js
function childfunc2(){
console.log("child function without return");
}
function callchildfunc(var1, var2){
return var1 + var2;
}
function parent(x){
var getreturnval = callchildfunc(x, 1);
console.log(getreturnval);
childfunc2();
}
这是我的测试文件。
//scenario 1
describe('Test for parent() function ', function(){
it('should make parent call ', function(){
var spy1 = sinon.spy(window, 'callchildfunc');
var spy2 = sinon.spy(window, 'childfunc2');
parent(2);
expect(spy1).to.have.been.called();
expect(spy2).to.have.been.called();
// or
sinon.assert.calledOnce(spy1);
sinon.assert.calledOnce(spy1);
});
});
在 运行 测试之后,我总是收到此错误。
AssertError: expected childfunc2 to be called once but was called 0 times
此外,如果我更改测试文件并调用间谍函数,它就会起作用。
var spy1 = sinon.spy(window, 'callchildfunc');
var spy2 = sinon.spy(window, 'childfunc2');
parent(2);
// After addding these below 2 lines.
window.childfunc2();
window.callchildfunc();
有什么帮助吗?
// Script.js
module.exports= {
childfunc2:function(){
console.log("child function without return");
},
callchildfunc:function(var1, var2){
return var1 + var2;
},
parent:function(x){
var getreturnval = this.callchildfunc(x, 1);
console.log(getreturnval);
this.childfunc2();
}
};
// Test.js
var sinon= require('sinon'), expect=require('chai').expect
var r= require('./functests')
describe('Test for parent() function ', function(){
it('should make parent call ', function(){
var spy1 = sinon.spy(r, 'callchildfunc');
var spy2 = sinon.spy(r, 'childfunc2');
r.parent(2);
// expect(spy1).to.have.been.called();
// expect(spy2).to.have.been.called();
// or
sinon.assert.calledOnce(spy1);
sinon.assert.calledOnce(spy1);
});
});
//截图