以笑话测试功能

时间:2018-04-15 12:02:01

标签: javascript reactjs testing jestjs

我需要一些关于如何以及如何

测试功能的建议

说我有一些州。

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()但是再一次,我在开玩笑中对功能测试不太满意。

任何建议?与某人聊天会很棒

感谢

1 个答案:

答案 0 :(得分:0)

我复制了你的问题陈述,但不确定你是如何维护状态模型(props / state)的。但这可能会有所帮助。 :)

在此处查看工作示例:https://codesandbox.io/s/6zw0krx15k

Format Selection