首页 > 解决方案 > 如何模拟状态数据以传递给函数?

问题描述

我正在尝试测试一个传递数据的函数,以便使用 Jest 和 Enzyme 更新状态,但不确定如何引用事件数组中的值?我希望能够访问 id、event 和 length,但 event.id、event.eventname event.length 似乎不起作用。

it("should update state properties using updateProperties()", () => {
  const event = [
    {
      id: 1,
      eventname: "Coachella",
      length: "7 days
    },
  ];
  const wrapper = shallow(<EditEvent event={event} />);
  wrapper.instance().updateProperties(event);
  expect(wrapper.state()).toEqual({
      id: 1,
      eventname: "Coachella",
      length: "7 days
  });

});

这是我正在测试的 updateProperties 函数

updateProperties(event) {
     this.setState({
       id: event.id
       eventname: event.eventname
       length: event.length
     });
 }

我查看了其他堆栈溢出帖子和文档,但没有找到任何与此相关的信息。任何帮助都会很棒

标签: functiontestingjestjsstateenzyme

解决方案


在您的测试中,您向组件传递了错误的参数updateProperties:实际上该方法期望event是一个对象,但您在测试中传递了一个数组。

 const event = [
    {
      id: 1,
      eventname: "Coachella",
      length: "7 days
    },
  ];

你只需要传递一个对象,没有[...]

const event = { 
  id: 1, 
  eventname: "Coachella", 
  length: "7 days" 
} 

你的测试将通过


推荐阅读