我正在使用mocha作为测试框架,并且我正在尝试模拟一个DELETE
使用fetch针对返回 HTTP 状态代码的端点的请求204
。
这是测试代码:
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);
});
});
这将返回以下输出:
matching <domain> to DELETE <domain>/<path>: true
(the above line being generated by the .log method in nock)
IS DONE?---> true
RESPONSE---> {}
如您所见,请求被正确拦截,如 thelog()
和isDone()
nock 方法所述,但是response
返回的对象是一个空对象,因此无法对返回的 HTTP 状态代码进行断言(在此示例中204
)
知道我在这里可能缺少什么吗?为什么该reply()
方法返回一个空对象?
更新
这是该方法的代码logout
,该方法是使用HTTP 方法的请求remove
的包装器。fetch
DELETE
logout(token) {
return remove(
this.host,
END_POINTS.DELETE_TOKEN,
{
pathParams: { token },
},
{
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
);
}