Javascript 使用sinon对具有got模块的函数进行单元测试
我有两个功能Javascript 使用sinon对具有got模块的函数进行单元测试,javascript,node.js,mocha.js,chai,sinon,Javascript,Node.js,Mocha.js,Chai,Sinon,我有两个功能 const callAndParseHttp = async (url) => { const response = await got(url); return await parseXml(response.body); }; const parseXml = async xmlData => { try { const json = parser.toJson(xmlData.body);
const callAndParseHttp = async (url) => {
const response = await got(url);
return await parseXml(response.body);
};
const parseXml = async xmlData => {
try {
const json = parser.toJson(xmlData.body);
return JSON.parse(json);
} catch (err) {
return err;
}
};
我在sinon写了一个单元测试
describe('/ handler', () => {
let spy;
before(() => {
spy = sinon.spy(unitParser, 'callAndParseHttp');
});
afterEach(() => {
spy.restore();
});
it('unit parser testing', async () => {
await unitParser.callAndParseHttp(
'http://www.mocky.io/v2/5e34242423'
);
expect(spy.callCount).to.equal(1);
});
})
我需要为此测试创建存根吗?我不熟悉单元测试。测试正确通过。这样你就不能完全测试它。更好的方法是使用
nock
模拟http调用,并端到端测试函数。你可以在这里看到这个例子
按照您的测试方式,它不会真正测试任何东西,因为它完全用您正在使用的
spy
替换函数。spy或stub更适合这里吗?提前谢谢。@LakshmipriyaMukundan我想你不需要使用间谍或存根。只需使用sinon并模拟响应即可。如果你愿意,你可以使用nock和spy。