web-dev-qa-db-ja.com

componentDidMountはEnzymeの浅いレンダリングで実行されるはずですか?

私の理解とさまざまな答えでこれまで読んだことから、すべてのライフサイクルメソッドが浅いレンダリングで実行されるとは限りません。特に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);
  });

テストに合格します。

だから、私はここで何か間違ったことをしているのですか、それとも何か間違ったことを理解していますか?

参照用

16

はい、enzyme 3.0

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

LifeCycleExperimental これは以前はshallowで手動でtrueに設定する必要があったオプションでしたが、現在は安定しているためデフォルトで有効になっています。

これは、ライフサイクルをテストするときにmountに頼るよりもはるかに優れています。

ユニットテストにshallowを使わない言い訳は絶対にありません:)... refs :(。

24
Martin Dawson