Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用sinon对具有got模块的函数进行单元测试_Javascript_Node.js_Mocha.js_Chai_Sinon - Fatal编程技术网

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。