Javascript React-Redux测试失败,因为它可以';t通过操作获取数据

Javascript React-Redux测试失败,因为它可以';t通过操作获取数据,javascript,reactjs,react-redux,jestjs,enzyme,Javascript,Reactjs,React Redux,Jestjs,Enzyme,我试图使用Jest和Ezyme测试我的智能组件,但它没有数据可渲染,因为它应该通过正确的操作获取。错误是:gettask不是函数 Enzyme.configure({ adapter: new Adapter() }); describe('Main', () => { describe('when loading is true', () => { it('should render loading div', () => { const wrapp

我试图使用Jest和Ezyme测试我的智能组件,但它没有数据可渲染,因为它应该通过正确的操作获取。错误是:
gettask不是函数

Enzyme.configure({ adapter: new Adapter() });

describe('Main', () => {
  describe('when loading is true', () => {
    it('should render loading div', () => {
      const wrapper = mount(<Main.WrappedComponent loading={true} />);
      expect(wrapper.html()).toEqual('<div>Loading</div>');
      wrapper.unmount();
    });
  });
});

您需要将GetTask作为函数传递到您的道具中:

const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={() => {}} />);
const wrapper=mount({}}/>);

当Ezyme挂载时,它将调用componentDidMount并调用未定义的prop并放大

更好的解决方案是模拟函数:

const getTasksMock = jest.fn();
const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={getTasksMock}/>);
const getTasksMock=jest.fn();
const wrapper=mount();
然后您可以通过以下方式检查调用函数:
toHaveBeenCalled()

能否显示WrappedComponent?您需要模拟服务器的响应。你可以用nockmodule@AdrianPażuchadone@IuriiBudnikov它只是从本地存储导入,没有服务器,甚至没有
fetch
func,但我明白你的意思了。你能给我发一个例子的链接吗?@IuriiBudnikov我查了
nock
,但它只用于HTTP请求,我没有HTTP请求,非常感谢!这对我有用。但是如果我想测试这个组件的正确呈现,我想用
getTasks()
做什么?我建议您使用Sinon存根这个函数,并且您可以确保在您期望的时候调用它。我将进行另一个测试,将
数据
提供到您的组件中,然后您可以断言
映射
函数正在正确输出元素。请在我的测试中描述虚拟
数据
?是的,使用您期望的正确格式。您可以提供一些“active”的
obj_status
,以测试其中的if语句,以及一个具有不同
obj_status
的语句,并确保该元素不会得到renderdok,明白了吗!再次非常感谢你!
const getTasksMock = jest.fn();
const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={getTasksMock}/>);