2016-07-09 25 views
6

ちょうどそれが言うこと。いくつかの例コード:反応+酵素で要素テキストを選択する方法

let wrapper = shallow(<div><button class='btn btn-primary'>OK</button></div>); 

const b = wrapper.find('.btn'); 

expect(b.text()).to.be.eql('OK'); // fails, 

またhtml方法は、例えば、要素の内容だけでなく、素子自体に加えて、すべての属性が返さそれは<button class='btn btn-primary'>OK</button>を与える。だから私は最悪の場合、htmlと呼ぶことができますが、正規表現ですが...

要素の内容を取得する方法があるので、私はそれを主張できます。

答えて

4

ノード(ReactElement)をshallow関数に渡していて、ReactにHTML属性classがないことを忘れないでください。 classNameを使用する必要があります。

からは、すべての属性は、キャメルケースと属性classforあるドキュメント

に反応するDOM APIに 仕様に一致するように、それぞれ、 classNamehtmlForです。

このテストでは、

const wrapper = shallow(<div><button className='btn btn-primary'>OK</button></div>); 
const button = wrapper.find('.btn'); 
expect(button.text()).to.be.eql('OK'); 
2

に動作しなければならない、私はルイ・barranqueiroはおそらく、あなたの根本的な質問に答えました@と思います。つまり、CSSセレクタが必要なので、classNameではなくclassを使用していたはずです。

しかし、試してみて、あなたが与えた実際の例を使用して、要素のテキストを選択する方法の疑問に答えるために:

let wrapper = shallow(<div><button class='btn btn-primary'>OK</button></div>);

はあなたがobject property selectorようなものを使用する必要があるだろう、例えば:

expect(wrapper.find({ class: "btn btn-primary" }).text()).to.equal('OK');

や小道具構文:

expect(wrapper.find('[class="btn btn-primary"]').text()).to.equal('OK');

(またはそれ以上明示的に):

expect(wrapper.find('button[class="btn btn-primary"]').text()).to.equal('OK');

+0

あなたは慎重に質問を読んでいる場合、著者は 'wrapper.find( 'BTN。')でボタンを選択しようとします;'。それに基づいて、明らかに、彼はカスタムHTML属性ではなく、 'class' HTML属性を使いたいと思っています。したがって、 'className'はReact DOM APIに' class'が存在しないため、 'className' React DOM属性を使用しなければなりません。 –

関連する問題