2017-08-25 9 views
0

サーバレスポンスに基づいてコールバックを呼び出すジェネリックフェッチ機能をテストしようとしています。 だから、機能がいくぶん次のようになります。私のモカテストでそうmochaを使用した非同期関数のテストは、常に.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が返されることを知っていますが、私はいつもの部分に入っているようですので、実際にはonSuccessコールバックに入ることはありません。

私が間違っていることはありますか?どんな助けでも素晴らしいでしょう!

答えて

0

解決済み、それは実際にはモカの問題ではありませんでした。最初の約束では理由はreturn response.json();ですが、使用されたサービスは平文の内容を返します。

関連する問題