fetch-mock не издевается над моим fetch
Вот фрагмент кода:
var fetch = require("node-fetch");
var fetchMock = require("fetch-mock");
function setupMockBlockChainExplorer() {
fetchMock.mock("https://cardanoexplorer.com/api/addresses/summary/DdzFFzCqrhsmagp4fDZpcY9UaBJk4Z8GaDfxqMCSwxPs3PnVoXmJWUZcgAxw3diCHVYauontEfk7YGeAu2LvAwq3aG2XQ8Mtsz7Vc8LA", {
"status" : 200,
"body" : "override"
});
}
async function makeRequest(url, method = "get", body = null, headers = null) {
const res = await fetch(url, {
method: method,
headers: headers,
body: body,
});
return res.json()
};
setupMockBlockChainExplorer();
var req = makeRequest("https://cardanoexplorer.com/api/addresses/summary/DdzFFzCqrhsmagp4fDZpcY9UaBJk4Z8GaDfxqMCSwxPs3PnVoXmJWUZcgAxw3diCHVYauontEfk7YGeAu2LvAwq3aG2XQ8Mtsz7Vc8LA");
// I would expect it to print "override" but it prints the http response from the real request instead
req.then(console.log)
Итак, я пытаюсь переопределить HTTP-запрос, как вы можете видеть в приведенном выше коде, но я все еще беру реальный URL с помощью fetch. Я прочитал документацию fetch-mock ( http://www.wheresrhys.co.uk/fetch-mock/installation.html) и попытался установить конфигурацию следующим образом:
fetchMock.config = Object.assign(fetchMock.config, {
"fetch": fetch
});
но без удачи. Что я делаю неправильно?
1 ответ
Решение
Я думаю, проблема в том, что вы не используете "глобальную" версию fetch
,
Попытка использования isomorphic-fetch
вместо node-fetch
,
Вы можете увидеть больше объяснений здесь.
Обратите внимание на это предложение:
использование import 'isomorphic-fetch'
не import fetch from 'isomorphic-fetch'