代码之家  ›  专栏  ›  技术社区  ›  Dimitris Karagiannis

componentDidMount应该在酶中以浅渲染方式运行吗?

  •  21
  • Dimitris Karagiannis  · 技术社区  · 7 年前

    根据我的理解以及目前为止在各种答案中阅读的内容,并不是所有生命周期方法都应该使用浅层渲染。尤其地 componentDidMount

    然而,我注意到当我这样做的时候

      beforeEach(function () {
        fakeComponentDidMount = sinon.stub(Component.prototype, 'componentDidMount');
        fakeComponentDidMount.callsFake(function () {});
        wrapper = shallow(<Component {...props} />);
      });
    
      afterEach(function () {
        fakeComponentDidMount.restore();
      });
    
      it('calls componentDidMount', function () {
        expect(fakeComponentDidMount.called).to.equal(true);
      });
    

    测试通过。

    那么,我是做错了什么,还是我理解错了什么?

    For reference

    1 回复  |  直到 7 年前
        1
  •  28
  •   JohnAllen    6 年前

    是的,它在 enzyme 3.0 .

    https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md#300

    LifeCycleExperimental 之前,您必须手动将其设置为true shallow 现在默认启用,因为它现在是稳定的。

    这比不得不求助于 mount 当想要测试生命周期时。

    绝对没有理由不使用 浅的 对于现在的单元测试:)。。。除了需要测试参考文献外:(。