У меня возникла проблема при желании выполнить модульное тестирование функции, которая запускает http-запрос и получает данные. Запрос перехватывается, но функция не получает то, что я определил в предложении .reply () функции nock. Я боролся в течение многих часов без какой-либо подсказки, где проблема !!!
Это моя функция:
import request from 'request';
import { pick, map } from 'lodash';
import { logger, getEnv } from './utils';
export default function getStoresFromProductDB() {
const dataToPick = [
'iccli',
'store_name',
];
const host = 'http://localhost:4001';
const url = `${host}/store`;
logger.info(`Getting stores from product DB at URL ${url}`);
return new Promise((resolve, reject) => {
request(url, { json: true }, (err, res, body) => {
if (err) {
reject(err);
} else {
const { data } = body;
resolve(map(data, store => pick(store, dataToPick)));
}
});
});
}
А это мой тестовый код:
describe('Testing getting stores from product database', () => {
it('should return 200 and the list of available stores from product database', async () => {
nock('http://localhost:4001')
.get('/store')
.reply(200, stores);
const data = await getStoresFromProductDB();
console.log('data', data);
});
});
Можете ли вы помочь мне, пожалуйста?