测试ReactJs

时间:2016-03-07 11:30:36

标签: javascript unit-testing promise mocha

我有以下功能,我想用mocha和chai测试它,期待。

这里“fetch”和“dispatch”是一个函数。 “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);

    });
});

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

1 个答案:

答案 0 :(得分:0)

查看promise-sync库。 它是promises的同步模拟,它允许指定在success / error / finally回调中忽略哪些断言错误。