app.js とは別に、react-router を必要とする React コンポーネントをテストしようとしています。
次のように、mixin Router.Navigation を使用してリダイレクトを行うコンポーネントがあります。
var React = require('react'),
Router = require('react-router');
var Searchbar = React.createClass({
mixins : [Router.Navigation],
searchTerm: function(e) {
if (e.keyCode !== 13) {
return;
}
this.context.router.transitionTo('/someRoute/search?term=' + e.currentTarget.value)
},
render: function() {
return (
<div className="searchbar-container">
<input type="search" placeholder="Search..." onKeyDown={this.searchTerm} />
</div>
)
}
});
module.exports = Searchbar;
このためのテストを作成しようとしましたが、壁にぶつかりました。transitionTo が期待どおりに動作することをテストできないという事実とは別に、Jest テストで次のエラー メッセージが表示されました。
警告: 失敗したコンテキスト タイプ: 必要なコンテキストrouter
が で指定されていませんSearchbar
。
警告とボーナスの質問を取り除く方法、移行が期待どおりに機能することをテストする方法を知っている人はいますか?
私はこれと Github でのこの会話について調査しました: https://github.com/rackt/react-router/issues/400は、私が見つけた問題に最も近いものです。ルーターを個別にエクスポートする必要があるようですが、https://github.com/rackt/react-router/blob/master/docs/guides/のように警告なしでコンポーネント テストを実行するだけでは、多くのオーバーヘッドが発生するようです。 testing.md
それは本当に進むべき道ですか?