Sinon监视函数内的所有函数调用



假设我们在flow.js中有一个这样的函数,它是一个web组件,所以所有函数都是该文件中一个类中的函数。

change(){

this.getParams();
this.loadData();
}

我想写一个测试用例,可以测试change((并确认是否调用了这两个函数。我尝试了很多方法,但都奏效了。我尝试过的方法之一是:

it('change() test', function () {
const sandbox = sinon.createSandbox();
sandbox.spy(el);
el.change();
assert(el.change.calledOnce); // output is true
assert(el.getParams.calledOnce); // output is false
assert(el.loadData.calledOnce); // output is false
}

el是对象/web组件。

你能告诉我这里出了什么问题吗?对于这种情况,什么是正确的实现?

您应该将spy添加到el.getParams()el.loadData()方法中。

例如

flow.js:

class Flow {
change() {
this.getParams();
this.loadData();
}
getParams() {}
loadData() {}
}
module.exports = Flow;

flow.test.js:

const Flow = require('./flow');
const sinon = require('sinon');
describe('flow', () => {
it('should pass', () => {
const sandbox = sinon.createSandbox();
const flow = new Flow();
sandbox.spy(flow, 'getParams');
sandbox.spy(flow, 'loadData');
flow.change();
sinon.assert.calledOnce(flow.getParams);
sinon.assert.calledOnce(flow.loadData);
});
});

最新更新