2017-11-15 17 views
4

これまでの私の理解から、これまでの様々な回答から、すべてのライフサイクルメソッドが浅いレンダリングで実行されるとは限りません。特にcomponentDidMountcomponentDidMountはEnzymeで浅いレンダリングで実行する必要がありますか?

はしかし、私は

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

答えて

3

はい、それはenzyme 3.0です。それが今で安定しているので手動shallow trueに設定するには、あなたが持っていたオプションはデフォルトで有効になりました以前だっ

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

LifeCycleExperimental

これは、ライフサイクルをテストするときにmountに頼る必要があるよりはるかに良いです。

今ユニットテストのためのshallowを使用しないように絶対に言い訳はありません。)...まあ別にあなたが:(REFをテストする必要があるときから素晴らしいです

+0

、感謝これは、すべてのライフサイクルメソッドが実行されることを意味しています。レンダリングタイプごとにどのようなライフサイクルメソッドが実行されているかをPRすることができます。 –

+0

@DimitrisKaragiannis私はそう考えると、各レンダリングライフサイクルをすぐにテストすることができます。 –

+0

私はバージョン3.3.0でcomponentDidMountが浅いレンダリング中に呼び出されるのではなく、componentWillMountが呼び出されているのですが、誰でも何が起こっているのか知っていますか?@DimitrisKaragiannisはこれをうまくやったのですか? –

関連する問題