【问题标题】:How to test if state of a component is changed by the function using jest and Enzyme in React TDD如何在 React TDD 中使用 jest 和 Enzyme 测试组件的状态是否被函数更改
【发布时间】:2018-10-21 10:52:02
【问题描述】:

我有一个函数用于将组件的状态更改为空数组。我想测试这个功能。我的函数如下所示:

clearAppliedFilters = () => {
  this.setState({
    appliedFilterList: {
      access: [],
      bandwidth: [],
      term: [],
    },
  });
};

我正在为此函数编写如下所示的测试用例:

it('checks clearAppliedFilters function', () => {
  const wrapper = shallow(
    <ProductList
      headerText="Hello World"
      productList={data}
      paginationSize="10"
      accessFilters={['a 1', 'a 2']}
      bandwidthFilters={['b 1', 'b 2']}
      termsFilters={['t 1', 't 2']}
      appliedFilterList={appliedFilter}
    />,
  );
  wrapper.setState({
    appliedFilterList: {
      access: [],
      bandwidth: [],
      term: [],
    },
  });

  expect(wrapper.instance().clearAppliedFilters()).toBe();
});

但我无法看到我的测试正在运行。那么可能是什么问题?如果我看起来不对,任何人都可以帮助我。我是 TDD 的新手,我正在努力编写这些测试。有人可以建议如何进行吗?

【问题讨论】:

    标签: javascript reactjs tdd jestjs enzyme


    【解决方案1】:

    这是工作测试用例,这可能会进一步帮助您:

    https://codesandbox.io/s/xr9295ov3q

    import React from "react";
    import { shallow } from "enzyme";
    import ProductList from "./ProductList";
    
        describe("ProductList Components", () => {
          it("should update correct ProductList state", () => {
            let wrapper = shallow(<ProductList />);
    
            wrapper.instance().clearAppliedFilters();
    
            expect(wrapper.state().appliedFilterList.access.length).toBe(0);
            expect(wrapper.state().appliedFilterList.bandwidth.length).toBe(0);
            expect(wrapper.state().appliedFilterList.term.length).toBe(0);
          });
        });
    

    【讨论】:

    • 感谢您的帮助。但是我在沙盒编辑器中看不到测试文件。对不起,我在检查时可能做错了。但是如果您不介意,请将测试代码放在这里,以便我查看代码。
    • 已添加!但是您可以在左侧看到 ProductList.spec.js 文件。
    • 如果这有帮助,请告诉我。
    • 非常感谢,它工作正常。我没有收到任何错误。但我有一个疑问。我们如何知道特定测试已成功通过?有没有办法找出测试文件中的所有测试是否都已运行,或者我们可以通过仅看到测试套件已通过总体含义来理解所有测试都已通过?抱歉,这听起来可能是一个非常愚蠢的问题,但我想检查是否所有测试都单独通过。无论如何,非常感谢您的帮助。 :)
    猜你喜欢
    • 2018-10-20
    • 2017-04-13
    • 2018-10-31
    • 2019-08-11
    • 1970-01-01
    • 2019-08-06
    • 2023-03-27
    • 2017-11-30
    • 2017-02-12
    相关资源
    最近更新 更多