2017-12-28 13 views
1

私の酵素単位テストで私のコンポーネントのデフォルト状態をチェックしようとしています。このために、私は次のコンポーネントがあります。酵素wrapper.stateがnullを返す

import React, { Component } from 'react'; 

class Picker extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     sources: true 
    }; 
} 

を...

export default Picker; 

は最後に、私のユニットテストは、次のようになります。

it('should contain `everything` as a default value',() => { 
    const wrapper = mount(<Picker name='cnn' />); 
    expect(wrapper.state('sources')).to.exist() 
}); 

私はここに直面してる問題がありますそれは、コンポーネントのデフォルト状態を取得できません。関数wrapper.state( 'sources')は、間違っていなければ 'true'を返します。

他のステップはありますか?私は "反応" を使用しています: "^ 16.2.0" と

  • "チャイ": "^ 4.1.2"、
  • "酵素": "^ 3.2.0"、
  • 」酵素アダプタ反応-16" : "^ 1.1.1"
  • "jsdom": "^ 11.5.1"、
  • "モカ": "^ 4.0.1"
  • 「react- addons-test-utils ":"^15.6.2 "
+0

'wrapper.state()'を覚えて、 '{source:true}'が表示されるかどうか試してみてください。その場合、あなたの「チャイ」主張は間違っています。私はそれが 'expect(wrapper.state( 'sources'))。to.be.true;'であるべきだと思います。 – norbertpy

+0

返信いただきありがとうございます。@norbertpy私は以下のMike Shutteによって提供された答えでそれを解決することができました。 – eduardo

+0

うれしいことにそれを解決しました。その後、彼の答えを受け入れてマークし、彼にアップヴォートを与えます。乾杯。 – norbertpy

答えて

1

私はこれと多く闘いました! PickerComponentのサブクラスであるため、実際に探している状態はで、wrapperでは存在しません。

shallowmountの「ラッパー」戻り値は、ラッパーです。テストしようとしているのは実際のコンポーネントではありません。私はそれがコンポーネントが囲まれている小さな環境だと思っています。コンポーネント上の状態、小道具、および機能上の主張を作るために

、私は手を伸ばし、より良い成功を持っている:

const component = wrapper.instance() 

その後componentに、あなたは.state.props、& Cを呼び出すことができます。

ご不明な点がありましたら教えてください。

+0

あなたは正しいと思います。@Mike Schutte ...あなたのご意見ありがとうございます! – eduardo

関連する問題