0
我想測試一個基於服務器響應調用各自回調函數的通用讀取函數。 因此,功能看起來有點像這樣:摩卡測試異步函數總是以.catch結尾()
const myFetch = (url, body, onSuccess, onError) => {
let status = 0;
fetch(url, header(body))
.then(response => {
status = response.status;
return response.json();
})
.then(jData => {
switch (status) {
case 200:
case 201:
onSuccess(jData, 'success');
break;
default:
onError([], 'error');
break;
}
})
.catch(() => {
onError([], 'error');
});
};
所以在我的摩卡測試我想斷言是的onSuccess(交付無論是消息)或onerror的()回調:
it('should perform fetch', function (done) {
this.timeout(5000);
const url = 'http://httpstat.us/201';
const onSuccess = (res, mes) => {
expect(mes).eq('success');
done();
};
const onError = (err, mes) => {
expect(mes).eq('error');
done();
};
Utils.myFetch(url, null, onSuccess, onError);
});
但是,雖然我知道201回來了,但我似乎總是進入.catch()
部分取回,所以我從來沒有真正進入onSuccess
回調。
有什麼我做錯了嗎?將是偉大的任何幫助!