测试ReactJs中使用的同构获取

Testing isomorphic-fetch used in ReactJs

本文关键字:同构 获取 ReactJs 测试      更新时间:2023-09-26

我有以下函数,我想用摩卡和柴来测试它,期望。

这里的"获取"和"调度"是一个函数。"fetch"用于对服务器进行 ajax 调用

function fetchMetadata() {
   return (dispatch) => {
       fetch('/json/metadata').then(
           (result) => {
               if (result.status === 200) {
                   return result.json();
               }
               throw "request failed";
           }
       ).then(
           (jsonResult) => {
               dispatch(jsonResult);
           }
       );
   }
}

我正在尝试测试如下,但我无法让测试失败,因为错误被承诺吞噬了!

"fetchMock"是一个模拟"fetch"函数的函数,这样我们实际上就不会调用服务器来取回数据。

describe('Should work', ()=>{
    before(()=>{
        fetchMock.mock('^/json/metadata', {body1:"testing"})
    });
    it.only('should fetch metadata when fetchMetadata is called ', function(){
        let returnedFetchMetadataFn = fetchMetadata();
        let mockDispatch = (argument)=>{
            expect(argument).toBe('SET_METADATA1');
        };
        returnedFetchMetadataFn(mockDispatch);
    });
});

我做错了什么或错过了什么?

查看承诺同步库。它是承诺的同步模拟,它允许指定在成功/错误/最终回调中忽略哪些断言错误。