2016-05-07 8 views
2

は、だから私は知っているES6コンポーネントを反応させます私はes6反応コンポーネントの内部でヘルパー関数にアクセスしますか?は内部イムは、私はプロトタイプとヘルパー関数にアクセスすることができcreateClassを使用している場合

class ContactUsRoot extends React.Component{インスタンスを作成してからインスタンスにアクセスする必要がありますか? @CHバッキンガム:テストで

var renderedElement = ReactTestUtils.renderIntoDocument(<Provider store = {store}><GraphRoot/></Provider>); 

    april = renderedElement.getDays(3, 2016, "13"); 

実際のコンポーネント:

class GraphRoot extends React.Component{ 
[...] 

getDays(month, year, days){ 
[...] 
return item; 
} 

レンダリング部分は完全に働いたことは


EDITかかわら右鳴りませんしかし、renderedElement.getDays(3, 2016, "13");のメソッドにアクセスしようとすると、sayiクラスの構文は次の構造(プラスさらにいくつかの意味論)のためのシンタックスシュガーにすぎないので、それは機能

答えて

0

更新:

var theProviderInstance = reactUtils.renderIntoDocument(<Provider><MyComponent/></Provider>); 
var theMyComponentInstance = reactUtils.findRenderedComponentWithType(theProviderInstance, MyComponent); 
theMyComponentInstance.someInstanceMethod(); 

// ===== あなたはクラスのプロトタイプを経由して、あなたの反応コンポーネントのインスタンスメソッドにアクセスすることはできません。

本当のリアクションユニットテスト環境では、リアクションコンポーネントをjsdomのような偽のDOMにレンダリングしてから、そのリファレンスを使ってテストを行います。ユーティリティを使用して:'react-addons-test-utils'renderIntoDocument

しかし、技術的には、単純なメソッドをテストしたいだけで、そのメソッドをグローバルにしたくない場合や、クラスがクロージャーオーバーしているエクスポートされた関数ではなく、実際の反応環境に実際にアクセスできる場合は、const fakeInstance = new ContactUsRoot()fakeInstance.test()

+0

私はreact test utilsとjsDomも使用していますが、レンダリング部分のみをテストするために使用されていると思っています。私はそれを使ってコンポーネント内部のヘルパー関数にアクセスできます。私は 'truest react unit test envior'に固執したいと思います。これは主に学習のためにやっていますので、助言をお願いします – user1294510

+0

renderIntoDocumentは反応コンポーネントのインスタンスを返します。次に、そのメソッドを呼び出してテストすることができます。 –

+0

はい、私はそれを試みましたが、それは私に型エラーを与えました: '関数ではありません'コードを表示するために投稿を編集しました – user1294510

0

ではありませんngの...

function ContactUsRoot() { 
    ... 
} 

ContactUsRoot.prototype.test = function() { 
    return 'yes'; 
} 

...あなたはテストにアクセスすることができるはずです同様に、以下のものを使用して機能:

ContactUsRoot.prototype.test(); 

は、だからあなたの場合には、既存のテストコードを再利用することができるはずです。あなたの編集のための

関連する問題