Я новичок в nodeJs и должен написать контрольный пример для службы A, которая внутренне вызывает другой сервис B для разрешения имени страны по IP-адресу. Служба B использует двоичный файл maxmind mmdb для разрешения имени страны по IP-адресу, службы работают нормально, однако у меня возникли проблемы с подделкой моей службы B, потому что она загружает файл mmdb, и у меня нет двоичного файла mmdb при выполнении контрольного примера, поэтому я хочу издеваться над методом обслуживания, но я не могу его смоделировать, мой сервис B выглядит следующим образом
'use strict';
const geoip = require('maxmind');
const path = require('path');
const countryLookUp = geoip.openSync(path.join(__dirname, '../database/GeoLite2-Country.mmdb'));
module.exports.getCountryByIp = async (ipAddress) =>{
const result = await countryLookUp.get(ipAddress) || getDefaultValue();
return {
code : result.country.iso_code,
name : result.country.names.en
}
}
function getDefaultValue() {
return {
country : {
iso_code : "",
names : {
en: ""
}
}
}
Мой тестовый пример выглядит следующим образом:
"use strict";
const geoIP = require('./service/IpToGeoService');
describe("mock test", ()=>{
const ipStub = sinon.stub(geoIP, "getCountryByIp");
const countryData = {name:"", code:""};
ipStub.returns(countryData);
});
Тестовые случаи завершаются с ошибкой: нет такого файла или каталога, откройте '/home/user/codebase/repos-name/src/database/GeoLite2-Country.mmdb'
Может кто-нибудь указать мне правильное направление, чтобы решить эту проблему.