我需要一些关于如何以及如何
测试功能的建议说我有一些州。
state = {
categories: [this is full of objects],
products: [this is also full of objects]
}
然后我有这个功能:
filterProducts = () => {
return this.state.products.filter((product => (
product.categories.some((cat) => (
cat.title == this.state.chosenCategory
))
)))
}
如果产品属于所选类别,则此功能通过计算来过滤产品数组。
你会如何测试?
我试过这个
let productsStub = [
{id: 1, title: 'wine01', showDescription: false},
{id: 2, title: 'wine02', showDescription: false},
{id: 3, title: 'wine03', showDescription: false}
]
wrapper = shallow(<Menu
categories={categoriesStub}
products={productsStub}
/>);
it('should filter products when searched for', () => {
const input = wrapper.find('input');
input.simulate('change', {
target: { value: '01' }
});
expect(productsStub.length).toEqual(1);
});
这个测试(我认为)是什么,当我搜索01时,我期望产品状态(以及状态的存根)过滤并仅返回1个结果。然而,测试失败并说预期:1收到:3即过滤不起作用。
我知道我也可以做wrapper.instance.filterProducts()
但是再一次,我在开玩笑中对功能测试不太满意。
任何建议?与某人聊天会很棒
感谢
答案 0 :(得分:0)
我复制了你的问题陈述,但不确定你是如何维护状态模型(props / state)的。但这可能会有所帮助。 :)
在此处查看工作示例:https://codesandbox.io/s/6zw0krx15k
Format Selection