2016-05-09 7 views
0

私はエラーがあることを確認するためにfindRenderedComponentWithTypeを使用し、チャイのassert.throwsを使用するImは動作しません。ReactTestUtils findRenderedComponentWithTypeチャーによる検出エラーが発生していませんか?


すべての最初:

TestUtils.findRenderedComponentWithTypeドキュメント:

expects there to be one result and returns that one result, or throws exception if there is any other number of matches besides one.


私は関数を使用する場合(期待して、正しいと)、イムは、エラーを取得。 しかし、私はチャイと正しくそれを主張するようです: 私はassert.throws(TestUtils.findRenderedComponentWithType(element, component), /(Error)/)しようとしました。しかし、それは私がエラーを取得していていても、テストが失敗したと言っている:

Error: Did not find exactly one match for componentType:function (props, context, updater) { 
[...] 
} 

答えて

1

はスローの署名を確認し、それが機能しませfindRenderedComponentWithTypeの結果であるエラー/オブジェクトを(期待し http://chaijs.com/api/assert/#method_throws

だから、あなたはそれが感謝を働くすべての最初の

cons fn =() => TestUtils.findRenderedComponentWithType(element, component) 
assert.throws(fn) 
+0

ような何かをしたいと思うでしょう。私は実際にはあまりにも前のことを読んで、私はまだ私の方法や関数が定義によって異なっている実感が、その後はしませんでしたこれはどうやってdiffを作ったのか分かりません。最初のパラメータで何が実行されたら、何が出力されるのか確認してください。それはコールバックと関係がありますか? – user308553

+1

あなたの最初の実装は、関数(またはメソッド)を渡していませんでした。 'TestUtils.findRenderedComponentWithType(要素、コンポーネント)'は最初に実行され、Componentオブジェクトを返すか、エラーをスローします。だから本当にあなたはそのタイプの1つを渡しています。 どのように実装されるか考えてみましょう。それは関数を受け取り、それをtry/catchブロックにラップして、それを実行します。あなたはそれを実行していたのですが、シーンの裏でそれがラップされていたのですが、それまでにはそれは遅すぎました。エラーがスローされました – ken4z

+1

補足として、https://github.com/airbnb/enzymeを参照してください。私はReactTestUtilsライブラリが(特にこれらのメソッド名で)動作する痛みの一部であることがわかりました。その結果、Enzymeが利用可能になる前に私自身が作成しました。 – ken4z

関連する問題