Модульный тест для функции с полученным модулем с использованием sinon - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть 2 функции,

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);
});
})

Нужно ли создавать заглушку для этого теста? Я новичок в модульном тестировании. Тесты проходят правильно.

1 Ответ

0 голосов
/ 24 февраля 2020

Таким образом, вы не полностью его тестируете. Лучшим подходом будет смоделировать вызов http, используя nock, и протестировать функцию от начала до конца. Вы можете увидеть пример здесь

https://www.npmjs.com/package/nock

То, как вы тестируете, ничего не проверяет, поскольку полностью заменяет функцию на spy который вы используете.

...