2016-04-22 6 views
1

ユニットテストで反応するコンポーネントは、しばしば小道具の存在または内容に基づいて子ノードの存在をチェックします。酵素とReact Componentに酵素を持つhtmlノードが含まれていることをテストする最も簡単な方法は何ですか?

、私は浅いのいずれかに.findを使用して要素を見つけたり、ラッパーをマウントし、その長さはチャイ1.あるかどうかを確認、これは次のようになります。

const wrapper = shallow(<MYReactComponent/>); 
const innerNode = wrapper.find('some-css-selector'); 
expect(innerNode.length).to.equal(1); 

がありますより良い方法のチェック

答えて

3

例のようにセレクタを介して存在をテストしていて、ShallowWrapperを返すメソッドを使用する必要があるとしたら、.lengthを使用する必要があります。しかし、あなたは、必ずしもそれのために別々のステートメントを必要としない。そのことについては

const wrapper = shallow(<MYReactComponent />); 
expect(wrapper.find('some-css-selector').length).to.equal(1); 

をしたい場合は、このような場合には、全体のことを統合できます。

expect(
    shallow(<MYReactComponent />) 
    .find('some-css-selector').length 
).to.equal(1); 

あなたがベースのテストしている場合

const wrapper = shallow(<MYReactComponent />); 
expect(wrapper.contains(
    <div class="something"> 
    <span>content</span> 
    </div> 
)).to.be.true; 
+0

ありがとう@JMM、私は思っています。いくつかのユースケースの解決策かもしれません。それでも、ほとんどの場合、私はまだ '.length'を使うように強制されます。そうしないと、私はチェックしたい内側の子を作り直さなければなりません。 –

+0

@ JMMあなたが少なくとも1人の子供を確認したいのですが、ちょうど1人でない人をチェックしたいですか? –

0

チェックアウトexists()

コンポーネントタイプに/小道具は、あなたはブール値を返す、を使用することができるかもしれ

expect(wrapper.find(MyComponent).exists()).toEqual(true)

関連する問題