如何使用Jest和Enzyme从React的功能组件中模拟方法

时间:2020-05-09 15:14:04

标签: reactjs unit-testing jestjs enzyme

import React from 'react';

export const HomePage = () => {

     const fetchResults = () => {
          return new Promise((resolve) => {
            Adaptor.fetch();
         });
        }
    const [initialState, dispatch] = useTableState();
    if (initialState.fetchNew) {
        let promise = fetchResults().then((res) => {
            //dispatch
        })
        throw promise;
    }
    return <Content />
}

我需要在上述首页组件中模拟 fetchResults 方法,以使其返回具有模拟json结果的已解决Promise。尝试了许多方法,但没有任何结果

尝试的方法之一是:-

 jest.mock("../components/homePage", () => {
            return {
                fetchResults: () => {
                return  Promise.resolve({data: [{value: 'test'}]});
              },
            };
          });

有人可以帮助我解决此问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

您缺少返回默认值的信息。 您也可以直接设置模拟数据。

jest.mock("../components/homePage", () => {
  return {
    default: () => {
      return <Content {...mockedData} />;
    },
  };
});