Я делаю следующий запрос с Axios:
axios.get("http://request.url/app.php", {
headers: {
"Accept": "application/json",
"X-Application-Key": "my-api-key",
},
params: {
url: "http://some/url",
format: "json",
param1: 1,
param2: 99999,
},
});
Вот макет:
const myAPI = nock("http://request.url/");
myAPI
.get("/app.php")
.query(({url}) => url === "http://some/url")
.replyWithFile(200, path.resolve(__dirname, "my-response.json"), {
"Content-Type": "application/json",
});
Все работает нормально, пока в запросе нет X-Application-Key
. Когда присутствует заголовок X-Application-Key
, я получаю следующую ошибку от nock:
Error: Error: Nock: No match for request {
"method": "OPTIONS",
"url": "<request url goes here>",
"headers": {
"origin": "http://localhost",
"access-control-request-method": "GET",
"access-control-request-headers": "X-Application-Key",
"user-agent": "Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/11.12.0",
"host": "<my host goes here>",
"content-length": 0
}
}
Я знаю, что это как-то связано с запросом OPTIONS, но я понятия не имею, как обойти эту проблему.
Я попытался использовать методы .matchHeader()
следующим образом:
myAPI
.get("/app.php")
.matchHeader("Accept", () => true)
.matchHeader("X-Mashape-Key", () => true)
.query(({url}) => url === "http://some/url")
.replyWithFile(200, path.resolve(__dirname, "my-response.json"), {
"Content-Type": "application/json",
});
Но это ничего не меняет.