私の理解とさまざまな答えでこれまで読んだことから、すべてのライフサイクルメソッドが浅いレンダリングで実行されるとは限りません。特に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);
});
テストに合格します。
だから、私はここで何か間違ったことをしているのですか、それとも何か間違ったことを理解していますか?
はい、enzyme 3.0
。
https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md#3
LifeCycleExperimental
これは以前はshallow
で手動でtrueに設定する必要があったオプションでしたが、現在は安定しているためデフォルトで有効になっています。
これは、ライフサイクルをテストするときにmount
に頼るよりもはるかに優れています。
ユニットテストにshallow
を使わない言い訳は絶対にありません:)... refs :(。