Używam architektury testowania jako mocha i próbuję wykonać próbkę DELETE
, która używa fetch do punktu końcowego, który zwraca kod stanu HTTP 204
.Nock przechwytuje żądanie, ale zwraca pusty obiekt
Oto kod testu:
it('should logout user', (done) => {
nock(<domain>)
.log(console.log)
.delete(path)
.reply(204, {
status: 204,
message: 'This is a mocked response',
});
api.logout(token)
.then((response) => {
console.log('IS DONE?--->', nock.isDone());
console.log('RESPONSE--->', response);
done();
})
.catch((error) => {
console.log('ERROR--->', error);
});
});
ta zwraca następujące dane wyjściowe:
matching <domain> to DELETE <domain>/<path>: true
(the above line being generated by the .log method in nock)
IS DONE?---> true
RESPONSE---> {}
Jak widać żądanie jest właściwie przechwycone jak stwierdził metod Nock log()
i isDone()
, zwracany obiekt jest jednak pusty, więc nie można wysyłać twierdzeń dotyczących zwróconego kodu statusu HTTP (w tym przykładzie: 204
)
Każdy pomysł, czego może mi brakować tutaj ?, dlaczego metoda reply()
zwraca pusty obiekt?
UPDATE
Oto kod sposobu logout
metoda remove
jest owijką dla fetch
zamówienie z wykorzystaniem metody DELETE
HTTP.
logout(token) {
return remove(
this.host,
END_POINTS.DELETE_TOKEN,
{
pathParams: { token },
},
{
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
);
}
Jaki jest kod 'api.logout'? To nie wydaje się być czymś dostarczonym przez 'nock'. Wydaje mi się, że może tam być błąd. – Louis
Reprezentuje on metodę "DELETE'HTTP dla punktu końcowego, która działa poprawnie i wydaje się być poprawnie przechwytywana, jak pokazano na wyjściu, zaktualizowałem pytanie, aby dołączyć kod, nie dodałem go wcześniej, aby uniknąć nieporozumień. – rfc1484