如何正确地对React组件进行单元测试?

莫·萨特勒

当我测试一个反应组件时,什么是最佳实践?我应该测试什么?在正常测试中,我通常只是测试正确的状态+输入是否导致正确的状态+输出

但是React组件有些不同。他们有state + props + userInput导致state + markup。

这可能导致很多不同的潜在情况。我是否需要测试所有这些方案的结果状态?标记可能很大。我应该测试整个标记树是否符合预期吗?还是只是其中一部分?如何确定要测试的标记的哪一部分?

安德烈·佩纳(AndréPena)

首先要记住的事情是:

  • 如果可以将组件的逻辑封装到模块中并进行独立测试,请执行此操作。示例:对于计算器组件,计算本身可以独立于组件进行测试。我知道这很明显,但这只是为了说明这一点。
  • 将您的组件分解成较小的组件,然后逐个进行详细测试。

关于组件,请始终进行以下测试:

  • 如果正确的道具将呈现正确的输出(HTML)。
  • 如果正确的用户交互(单击,按键...)将触发相应的事件并导致正确的输出(HTML)。在单元测试期间,我通常根本不处理组件状态,因为我认为这不是一个好习惯。要测试电视,您不必打开电视。

如果您不确定要使用哪个库来测试React组件,我强烈建议您使用Enzyme

GitHub页面上的示例:

describe('<MyComponent />', () => {
  it('renders three <Foo /> components', () => {
    const wrapper = shallow(<MyComponent />);
    expect(wrapper.find(Foo)).to.have.length(3);
  });

  it('renders an `.icon-star`', () => {
    const wrapper = shallow(<MyComponent />);
    expect(wrapper.find('.icon-star')).to.have.length(1);
  });

  it('renders children when passed in', () => {
    const wrapper = shallow(
      <MyComponent>
        <div className="unique" />
      </MyComponent>
    );
    expect(wrapper.contains(<div className="unique" />)).to.equal(true);
  });

  it('simulates click events', () => {
    const onButtonClick = sinon.spy();
    const wrapper = shallow(
      <Foo onButtonClick={onButtonClick} />
    );
    wrapper.find('button').simulate('click');
    expect(onButtonClick).to.have.property('callCount', 1);
  });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确地对属性更改进行单元测试?

来自分类Dev

如何对这个(正确地)引发异常的异步方法进行单元测试?

来自分类Dev

如何正确地对Joi Schemas验证进行单元测试?

来自分类Dev

如何正确地对属性更改进行单元测试?

来自分类Dev

如何对这个(正确地)引发异常的异步方法进行单元测试?

来自分类Dev

如何正确地对链表进行单元测试(使用Python)?

来自分类Dev

如何正确地对计算日期和时间的代码进行单元测试

来自分类Dev

如何在Jasmine-node中正确地使异步单元测试失败

来自分类Dev

如何在使用 sinon 的 mocha 单元测试中正确地排除请求承诺?

来自分类Dev

如何对React-Redux连接的组件进行单元测试?

来自分类Dev

我如何对一个方法正确地将新值分配给另一个类进行单元测试

来自分类Dev

SailsJS:如何正确地对测试控制器进行单元化?

来自分类Dev

如何在Python函数内部正确地对测试代码进行单元化

来自分类Dev

如何正确进行单元测试

来自分类Dev

在EmberJS中对组件进行单元测试的正确方法

来自分类Dev

在EmberJS中对组件进行单元测试的正确方法

来自分类Dev

如何使用react testing库对父组件中子组件的渲染进行单元测试?

来自分类Dev

对访问全局存储的React组件进行单元测试

来自分类Dev

使用Jest on React组件进行单元测试

来自分类Dev

如何在 React Router 4 下对组件进行单元测试

来自分类Dev

如何对依赖服务的组件的方法进行单元测试?

来自分类Dev

如何正确使用内存传输进行单元测试

来自分类Dev

如何对MatDialog(角材料)进行单元测试的正确方法?

来自分类Dev

如何正确设置模拟数据以进行单元测试?

来自分类Dev

如何正确使用大量依赖项进行单元测试

来自分类Dev

如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

来自分类Dev

对Auth组件进行单元测试

来自分类Dev

使用PostSharp进行正确的单元测试

来自分类Dev

如何正确地对来自Transloco API的标签进行单元化

Related 相关文章

  1. 1

    如何正确地对属性更改进行单元测试?

  2. 2

    如何对这个(正确地)引发异常的异步方法进行单元测试?

  3. 3

    如何正确地对Joi Schemas验证进行单元测试?

  4. 4

    如何正确地对属性更改进行单元测试?

  5. 5

    如何对这个(正确地)引发异常的异步方法进行单元测试?

  6. 6

    如何正确地对链表进行单元测试(使用Python)?

  7. 7

    如何正确地对计算日期和时间的代码进行单元测试

  8. 8

    如何在Jasmine-node中正确地使异步单元测试失败

  9. 9

    如何在使用 sinon 的 mocha 单元测试中正确地排除请求承诺?

  10. 10

    如何对React-Redux连接的组件进行单元测试?

  11. 11

    我如何对一个方法正确地将新值分配给另一个类进行单元测试

  12. 12

    SailsJS:如何正确地对测试控制器进行单元化?

  13. 13

    如何在Python函数内部正确地对测试代码进行单元化

  14. 14

    如何正确进行单元测试

  15. 15

    在EmberJS中对组件进行单元测试的正确方法

  16. 16

    在EmberJS中对组件进行单元测试的正确方法

  17. 17

    如何使用react testing库对父组件中子组件的渲染进行单元测试?

  18. 18

    对访问全局存储的React组件进行单元测试

  19. 19

    使用Jest on React组件进行单元测试

  20. 20

    如何在 React Router 4 下对组件进行单元测试

  21. 21

    如何对依赖服务的组件的方法进行单元测试?

  22. 22

    如何正确使用内存传输进行单元测试

  23. 23

    如何对MatDialog(角材料)进行单元测试的正确方法?

  24. 24

    如何正确设置模拟数据以进行单元测试?

  25. 25

    如何正确使用大量依赖项进行单元测试

  26. 26

    如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

  27. 27

    对Auth组件进行单元测试

  28. 28

    使用PostSharp进行正确的单元测试

  29. 29

    如何正确地对来自Transloco API的标签进行单元化

热门标签

归档