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中添加初始状态)