2017-09-26 13 views
4

私はしばらくの間、私のReactアプリケーションのコンポーネントをテストするためにEnzymeを使用してきました。数週間で初めてパッケージを更新した後、テストからエラーが発生し始めました。私のアプリケーションは、活字体で書かれているようenzyme-adapter-react-16の宣言ファイルが見つかりませんでしたか?

import * as enzyme from 'enzyme'; 
import Adapter from 'enzyme-adapter-react-16'; 
enzyme.configure({ adapter: new Adapter() }); 

しかし、私は今、新しい二つに実行します。

FAIL src/__tests__/title.test.ts 
    ● Testing title component › renders 
Enzyme Internal Error: Enzyme expects an adapter to be configured, but found none. [...] 
To find out more about this, see http://airbnb.io/enzyme/docs/installation/index.html 

は、私がリンクに記載され'enzyme-adapter-react-16'をインストールして、私のテストファイルに次の行を追加して進みます問題。

error1 error2

画像を最初のエラーを明確にするために、TS7016は、enzyme-adapter-react-16ための任意の種類、および2番目のエラーがないことで、TS2339は、enzymeプロパティconfigureを持っていないと言います。

私は比較的TypeScriptが新ですので、何か助けが必要です。 enzyme-adapter-react-16のタイプをインストールしようとしましたが、存在しないようです。

自分で追加するか、何らかの方法でこの問題を回避できますか?

また、このエラーが発生した原因についても興味があります。私は前にアダプターは必要なかった、なぜ今?

答えて

9

自分で追加するか、何らかの方法でこの問題を回避できますか?

現在のところ、enzyme-adapter-react-16のタイプがないというのは間違いないと思います。かなり新しいので、まだ誰も作成していないようです。

あなたは自分で作成することができます。また、それらがよく定義されていると思われる場合は、DefinitelyTypedに他の人が使用する可能性があります。問題を回避するには、タイプ情報がないという事実をTypeScriptに無視させることができます。型エラーを無視するには

:最初のエラーのために

  • を、エラーメッセージがを支援しようとする「新宣言(.d.ts)ファイルを追加します...」。だから、あなたはenzymeAdapter.d.tsという名前のファイル(通常は "/ types"というフォルダに入れます)を作成し、内容をdeclare module 'enzyme-adapter-react-16';(エラーメッセージから)にすることができます。これは、基本的にtypescriptに、インポートされたオブジェクトをanyタイプ(すなわち、タイプチェックなし)として扱うように指示します。

  • 2番目のエラーでは、enzymeのインポートをanyにキャストしてからconfigureにコールすることができます。例:(enzyme as any).configure({ adapter: new Adapter() });。 tslintがanyの使用に関する不満がある場合は、上の// tslint:disable-next-line:no-anyコメントでその行だけを無視するようにすることができます。

全コード:このエラーが表示され作ったものも

import * as enzyme from 'enzyme'; 
import * as Adapter from 'enzyme-adapter-react-16'; 

// tslint:disable-next-line:no-any 
(enzyme as any).configure({ adapter: new Adapter() }); 

好奇心。私は前にアダプターは必要なかった、なぜ今?

これは、バージョン3のためのenzymeプロジェクトから新しい設計上の選択である - あなたがバージョン2.x hereからの主な変更についての詳細情報を読むことができます。私は、アダプターのアプローチは、反応の異なるバージョンをサポートするためのさまざまな要件をより簡単でより一貫性のあるものにすることだと思います。

+0

素晴らしい!ありがとう@ジョーノの仕事! :) – langkilde

+0

問題はありません@langkilde :)将来の人々のために、これらは、タイピングがライブラリに追いつくまで、一時的な回避策でなければなりません。 –

+1

@langkilde FYI: '@ types/enzyme'(v2.8.9)の最新バージョンへの更新に' configure'関数が含まれるようになりました.2番目のエラー回避策はもはや必要ありません。人々は速く動く! –

関連する問題