2016-05-13 16 views
-1

ReactのTest-Utils(https://facebook.github.io/react/docs/test-utils.html)を使用してコンポーネントをテストしようとしています。React - Own Ownee Unit Testing

所有者と所有者があります。

所有者は、レンダリング:

<Ownee> 
    <div class="inner"> 
     <div class="moreInner" /> 
    </div> 
</Ownee> 

私のテストでは、このようなようなものです:理想的

var comp = TestUtils.renderIntoDocument(<Owner />); 
var innerClass = TestUtils.findRenderedDOMComponentWithClass(comp, "inner"); 
expect(innterClass).to.not.be.null; 

、これは正常に動作する必要があります。しかし、実際には、「一致するものが1つも見つからなかった(見つかった:0)」という結果が出力されます。

それは同様ですので、私は上記の<Ownee></Ownee>を削除するのであれば:

<div class="inner"> 
     <div class="moreInner" /> 
    </div> 

期待どおりに動作しますが、私は(あまりにもOwnee要素をレンダリングする必要があります)これを使用することはできません。 (それはクラスでdiv要素を作業して見つけるテストである)は、所望の結果を得るためにTestUtilsを使用する方法について

<div class="inner"> 
    {this.props.children} 
</div> 

任意の提案:

Owneeはそうのようなものをレンダリングしますか?

ありがとうございます!

+1

使用 'className' **ない**クラス – ajmajmajma

+0

アムやって、MIS型コードを簡素化します。 –

+0

owneeがclassNameを内部にレンダリングする場合、なぜowneeタグの中に手動で追加するのですか?あなたは所有者と所有者のためにrender()を変更して表示していますか? – ajmajmajma

答えて

0

問題はオーナー/所有者ではありませんでした。私はReact-Bootstrapのモーダルダイアログ(Ownedとして)を使用していたことになりました。テストがコンポーネントをレンダリングするのはどうでしたか。しかし、それは別のコンポーネントツリーに置かれます。 、具体的にuser1778856の答えを Testing a React Modal component

:この問題を回避するには

は、私が以前に尋ねた質問を行いました。

var stubModal =() => { 
    var createElement = React.createElement; 
    modalStub = sinon.stub(React, 'createElement', function (elem: any) { 
     return elem === ModalDialog ? 
      React.DOM.div.apply(this, [].slice.call(arguments, 1)) : 
      createElement.apply(this, arguments); 
    }); 
    return modalStub; 
}; 
var stubModalRestore =() => { 
    if (modalStub) { 
     modalStub.restore(); 
     modalStub = undefined; 
    } else { 
     console.error('Cannot restore nonexistent modalStub'); 
    } 
}; 

before(() => { stubModal(); }); 
after(() => { stubModalRestore(); }); 

その他のリンク: Unit testing React Bootstrap modal dialog