Reactjs 如何测试(单元测试)React中过滤了一系列对象的reducer

Reactjs 如何测试(单元测试)React中过滤了一系列对象的reducer,reactjs,testing,jestjs,Reactjs,Testing,Jestjs,我有一个问题,无法为我的一个减速机编写正确的测试 我的表情: export const initialState = { time: undefined, products: undefined, filteredProducts: [], search: "" }; case "FILTER_BY_VALUE": { return { ...state, search: payload, filteredProduc

我有一个问题,无法为我的一个减速机编写正确的测试

我的表情:

export const initialState = {
  time: undefined,
  products: undefined,
  filteredProducts: [],
  search: ""
};

case "FILTER_BY_VALUE": {
      return {
        ...state,
        search: payload,
        filteredProducts: [
          ...state.products.filter(product =>
            product.name.toLowerCase().startsWith(payload.toLowerCase())
          )
        ]
      };
    }

我的减速器按值过滤对象数组(在我的示例中,它是有效负载)

我的测试外观:

it("FILTER_BY_VALUE", () => {
    const action = {
      type: "FILTER_BY_VALUE",
      payload: "dsf"
    };
    expect(data(initialState, action)).toEqual({
      ...initialState,
      search: action.payload
      //   filteredProducts: Object
    });
  });
图像中出现错误:

确保在
数据中传递的
初始状态
具有
产品
字段

products
似乎是一个使用方式的数组,其中包含具有
名称
字段的对象


it("FILTER_BY_VALUE", () => {
    const initialState = {
       products: [{name: 'dsffoo'}, {name: 'bardsf'}]
    }

    const action = {
      type: "FILTER_BY_VALUE",
      payload: "dsf"
    };

    expect(data(initialState, action)).toEqual({
      ...initialState,
      search: action.payload,
      filteredProducts: ['dsffoo']
    });
});

确保在
数据
中传递的
初始状态
具有
产品
字段

products
似乎是一个使用方式的数组,其中包含具有
名称
字段的对象


it("FILTER_BY_VALUE", () => {
    const initialState = {
       products: [{name: 'dsffoo'}, {name: 'bardsf'}]
    }

    const action = {
      type: "FILTER_BY_VALUE",
      payload: "dsf"
    };

    expect(data(initialState, action)).toEqual({
      ...initialState,
      search: action.payload,
      filteredProducts: ['dsffoo']
    });
});

你能分享完整的减速机和完整的数据代码吗?最初的猜测是
产品
在您的
初始状态
@skovy中是
未定义的
,您能再看一次吗?我根据您提供的代码片段更新了post(在reducer中添加初始状态)。产品仍然是未定义的。没有上下文,很难提供帮助;我们不知道在reducer运行时您的状态中包含什么。@DaveNewton我修复了我的错误,谢谢您共享完整的reducer和完整的数据代码?最初的猜测是
产品
在您的
初始状态
@skovy中是
未定义的
,您能再看一次吗?我根据您提供的代码片段更新了post(在reducer中添加初始状态)。产品仍然是未定义的。没有上下文,很难提供帮助;我们不知道减速机运行时您的状态中包含了什么。@DaveNewton我修复了我的错误,谢谢您能再看一次吗?我更新了帖子(在reducer中添加初始状态),你能再看一遍吗?我更新了帖子(在reducer中添加初始状态)