React中的单元测试非静态方法

Unit test non static methods in React

本文关键字:静态方法 单元测试 React      更新时间:2023-09-26

我想为react组件中的方法编写单元测试。我想在不渲染组件的情况下执行此操作。这是因为我不想设置完整渲染所需的所有数据。我想做这样的事情:

describe('MyList', function () {
  describe('fooSort', function () {
     it('sort strings', function () {
      var list = <MyList />;
      var result = list.fooSort(['a', 'c', 'b'])
      expect(result).to.be.equal(['a', 'b', 'c'])
    });
  });
});

这可以通过添加fooSort作为静态方法来实现,但这将使该方法无法访问它。而且感觉也不对。

有没有一种方法可以访问这些方法,或者有其他方法可以进行这种测试?

我知道这篇文章类似于:我如何访问React中的方法进行单元测试,但实际上并不相同。

如果使用new MyList而不是JSX <MyList />,这将起作用。

describe('MyList', function () {
  describe('fooSort', function () {
     it('sort strings', function () {
      var list = new MyList;
      var result = list.fooSort(['a', 'c', 'b'])
      expect(result).to.be.equal(['a', 'b', 'c'])
    });
  });
});

请注意,如果是JSX,它将被传输到React.createElement(MyList),在您的情况下,这不是您想要的。