Как заглушить перекрестную выборку с синон

#javascript #node.js #typescript #sinon

Вопрос:

В моем проекте node я использую Sinon, и у меня возникли проблемы с издевательством над библиотекой перекрестной выборки.

Таким образом, в основном у меня есть простая служба, которая вызывает внутреннюю перекрестную выборку, что-то более или менее похожее на это:

 import fetch from 'cross-fetch';

public async sendMyData(id): Promise<void> {
      const payload = await this.generatePayload(id);
      await sendRequest(payload, id);
  }
 

А затем fetch называется так:

 private async sendRequest(payload, id): Promise<void> {
      await fetch(`http://my-api-url/endpoint/${id}`, {
          method: 'POST',
          body: JSON.stringify(payload)
      });
  }
 

Поэтому в своих тестах я хочу создать свой сервис и имитировать перекрестную выборку и проверить, с какой полезной нагрузкой он был вызван.

Комментарии:

1. Какой метод вы хотите протестировать?

2. Я хочу проверить sendMyData, который вызывает sendRequest, и этот использует внутреннюю выборку. Я знаю, что мог бы использовать jest, чтобы поиздеваться над всем модулем, но, к сожалению, мы не можем использовать jest в нашем проекте.

3. Вы можете использовать макет библиотеки http, например: fetch-mock или nock . Или вы должны использовать только синон?

4. Проблема в том, что я должен использовать синон. Но я думаю, что в проекте также присутствует http-макет. Как с помощью этого можно издеваться над внутренним вызовом http в частном методе?