Tôi đang sử dụng mocha làm khung kiểm tra và tôi đang cố gắng giả lập yêu cầu DELETE
sử dụng fetch đối với điểm kết thúc trả lại mã trạng thái HTTP 204
.Nock chặn yêu cầu nhưng trả về đối tượng trống
Đây là mã kiểm tra:
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);
});
});
này trả về kết quả như sau:
matching <domain> to DELETE <domain>/<path>: true
(the above line being generated by the .log method in nock)
IS DONE?---> true
RESPONSE---> {}
Như bạn có thể thấy yêu cầu đã được chặn lại đúng như đã nêu bằng các phương pháp log()
và isDone()
Nock, tuy nhiên đối tượng response
được trả lại là một đối tượng trống, vì vậy không thể xác nhận về mã trạng thái HTTP trả lại (trong ví dụ này 204
)
Bất kỳ ý tưởng nào tôi có thể bị thiếu ở đây ?, tại sao phương thức reply()
trả về một đối tượng trống?
CẬP NHẬT
Đây là mã cho phương pháp logout
, phương pháp remove
là một wrapper cho một yêu cầu fetch
sử dụng phương pháp DELETE
HTTP.
logout(token) {
return remove(
this.host,
END_POINTS.DELETE_TOKEN,
{
pathParams: { token },
},
{
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
);
}
Mã 'api.logout' là gì? Điều đó dường như không được cung cấp bởi 'nock'. Dường như với tôi có thể có một lỗi ở đó. – Louis
Nó đại diện cho phương thức 'DELETE'HTTP cho điểm kết thúc, hoạt động tốt và dường như bị chặn chính xác như được hiển thị trong đầu ra, tôi đã cập nhật câu hỏi để bao gồm mã, tôi chưa bao gồm nó trước để tránh nhầm lẫn. – rfc1484