テストする方法を知りたい場合は、正しい場所にいます。あなたのコードはあなたのコードが何をするべきかを知っていますか?ブラウザでテストしましたか?あなたがいない場合、またはあなたがすべてをテストすることができないならば、それは生産で壊れるのですか?
テストライブラリは、アプリケーションコンポーネント上で個々のテストを書き込むために使用するユーティリティ開発者のグループです。テストの主な部分のいくつかは次のとおりです。
-
説明:
テストが何であるかについて説明します
-
使用/ render:
テストできる環境でコンポーネントを使用します
-
モッキング:
あなたの仮定をチェックすることができるように、ふりをする機能を作成します
この記事の過程で、あなたがあなたのコード出力の堅牢性を改善するためのこの貴重な方法で始めるのを助けるために、そしてあなたのコードが投げ込まないようにするために、React Testing Libraryからいくつかの例を探求するつもりです。それが生産に入ると、厄介な驚きを上げる。
もっと便利なリソースが欲しいですか?これがベストのランダウンです
Webデザインツール
その周りにあなたが賢く働くのを助けます。それとも新しいマシンが必要な場合は、この切り替えを試してください。
プログラミングのための最高のラップトップ
。それとも新しいサイトを構築しているなら、あなたは素晴らしい必要があるかもしれません
ウェブサイトビルダー
。
01. React Testing Libraryを使い始める
テストライブラリですでに事前設定されているため、このデモのためにcreate-react-appを使うつもりです。 Gatsbyまたはカスタムセットアップを使用している場合は、テストライブラリの使用を開始する前に実行する必要がある設定がある場合があります。
開始するには、新しいアプリを作成しましょう。最近のNode.jsのバージョンがすでにある場合は、他にはグローバルにインストールせずに次のコマンドを実行できます。
npx create-react-app netmag-javascript-testing
02.テストするものを決定します
簡単なコンポーネントを持っていると想像してください。このようなコンポーネントでテストが必要なもののいくつかは何ですか?
●
コンポーネントの外観
私たちが私たちのコンポーネントを書いた後、私たちは何も突然変わることを望まない。それで、それがどのようにレンダリングするかを捉えるためにスナップショットテストを書くつもりです。それから、何も変更された場合は、マニュアルまたは視覚テストがなくてもすばやく表示されます。これは、多くの小さなコンポーネントで構成されているコンポーネントに最適です。その外観が影響を受ける(そしてどこで)迅速に見ることができます。
●
レンダリングするさまざまなブランチ
2つ以上の異なる出力を持つことができるので、それらのうちの1つだけではなく、それらすべてを正しくレンダリングする必要があります。そのため、クリックイベントをシミュレートする必要があり、このコードブランチが実行された後にレンダリングされた方法のための別のスナップショットテストが必要です。
●
その関数は期待どおりに呼び出されます。
私たちが書いたコードが別の関数を呼び出すようになることを確実にしたいと思います。しかし、その関数は外部の依存関係であるため、ここでそれをテストしたくありません。私たちのテストは彼らに欲しい機能のみをカプセル化する必要があります。
03.あなたの最初のテストを書く
(画像:©Ben Read)
私たちの最初のテストを書いてみましょう。新しいファイルを作成します
mycomponent.unit.test.js.
コンポーネントと同じフォルダにあります。最後にtest.jsを追加することで、テストライブラリによって自動的に選択されます。そのファイルの内容は以下のとおりです。
インポートが 'reat'から反応する
'@ testing-library / REAT'からインポート{レンダリング}
myComponentを './myComponent'からimport import
( 'the the mycomponent / gt;'、()=>}
//テストここに行きます
【126】
私があなたの注意を引いた最初のことは
説明()
2つの引数を取ります。最初は、テキストの文字列として、テキストの文字列として使用できる文字列です。テストが行っているのです。私たちの場合、私たちはそれがレンダリングされるべきであると言われました。これは他の誰かがあなたのコードを調べるとき、または後の段階で何をしたことを覚えている必要があるときに非常に便利です。良い説明文の書き込みは、コード文書の形式であり、テストを書くのは別の正当な理由です。
2番目の引数はあなたのテストです。 the
説明()
関数は、これらのテストのすべてをもう1つ後に実行します。
04.クリーンアップ機能を使用してください
呼び出されたヘルパー関数を紹介しましょう
昔)
。このコンポーネントで何かをするたびにこれを使用する必要がありますので、私たちが以前に私たちが以前に渡されたプロップがまだ存在していたのは新鮮なコピーを望みます。またはコンポーネントを再レンダリングする必要があるかもしれません:
昔)
私たちのためにそれをクリーンアップ機能に渡すことができますか。
'@ testing-library / REAT'からのインポート{レンダリング、クリーンアップ}
...
説明(「コンポーネントは '=」、()=> {
早いの(クリーンアップ)
05.スナップショットテストを書く
(画像:©Ben Read)
このステップでは、コンポーネント(またはレンダリングする)に「マウント」します。
(「コンポーネントはレンダリングする必要がある」、()=> {
早いの(クリーンアップ)
それ(基本小道具を使ったレンダリング)、()=> {
レンダリング(< mycomponent / gt;)
)
このレンダリングは、コンパイルされたコンポーネントのレンダリングされたプロパティすべてにアクセスできます。 Aにこれを落とすのが良いかもしれません
console.log()
だからあなたはそれが何をするのかをより明確に見ることができます。
あなたがするならば、あなたは私たちがここで利用できる有用な特性がいくつかあることがわかるでしょう。私はアサーションを作成する(テスト可能な宣言を作成)、コンテナを抽出することによってそれをテストします。コンテナ 'には、コンポーネントに関連付けられているDOMノード(すべてのHTML)が含まれています。
(「基本小道具を使ったレンダリング」、()=> {
const {container} =レンダリング(
今、私たちはコンテナにアクセスできます、私はそれが私の主張に従ってレンダリングされていることをどのように言うのですか?スナップショットテストを追加することによって。
スナップショットを写真のように考えてください。特定の時点でコンポーネントのスナップショットを取ります。その後、コードを変更するたびに、まだ元のスナップショットと一致するかどうかがわかります。そうであれば、コンポーネントで何も変更されていないと確信しています。ただし、そうでない場合は、以前にスポットしていない可能性がある場合、他のコンポーネントで発生した問題を明らかにした可能性があります。
06.プロパティのテスト
コンポーネントのプロパンド、またはプロパティもスナップショットでテストできます。あなたがあなたのコンポーネントに提供するさまざまな小道具をテストすると、あなたにより大きな報道と自信があります。要件がいつリファクタリングされ、最終的な出力が変わるという要件がいつ発生してもわかりません。
次のオブジェクトをファイルの先頭に追加します。
LightProperties = {
BackgroundColour:「白」、
TextColour: 'Darkblue'
オブジェクト内のプロパティを定義してから、スプレッド演算子(3ドットの後にオブジェクト名を実行します。
···ライトプロパティ)
この方法をレンダリングしたときにのみ1つの引数を渡すことができるからです。隔離しているプロパティを確認するのにも便利です。
(「基本小道具を使ったレンダリング」、()=> {
const {container} =レンダリング(
07. UIのテストの変更
私たちのコンポーネントにボタンがあると想像してください、そしてあなたはボタンをクリックしたときに何かが起こることを確認したいと思います。アプリケーションの状態をテストしたいと思うかもしれません。たとえば、状態が更新されたことをテストすることを誘惑するかもしれません。しかし、それはこれらのテストの目的ではありません。
これにより、テストライブラリを使用する際の重要な概念に紹介します。私たちは、人々がどのようにしてコンポーネントをどのように使用しようとし、それが彼らの期待を満たすかをテストするためにここにいます。
そのため、状態が更新されたかどうかは重要ではない。テストしたいのは、そのボタンの結果が何であるかです。
UIをダークモードからライトモードに変更する関数の結果をテストしてみましょう。これがコンポーネントです。
const modetoggle =()= gt; {
const [モード、SetMode] = USESTATE ['LIGHT']
const toggletheme =()= gt; {
if(Theme === 'Light'){
SetTheme(「暗」)
} そうしないと {
SetTheme(「ライト」)
}
}
帰り(
< toggleButtonデータ - testid = "MODE-TOGGLE" LightMode = {mode} onclick = {togglemode};
トグルモード
< / togglebutton>
)
}
まず、レンダリングフェーズで見つけることができるように、テストIDをボタンに追加する必要があります。
戻る(
< togglebutton
data-testid = "モードトグル"
LightMode = {モード}
onclick = {togglemode}
>
トグルモード
< / togglebutton>
新しい属性を追加しました
Data-Testid
ボタンに?テスト方法は次のとおりです。まず、テストライブラリから新しい機能をインポートします。
インポート{クリーンアップ、
薪
寝る
'@ testing-library / REAT'から}
その関数を使用してUIに変更があるため、これらの変更が一貫していることを確認できます。
(「基本小道具を使ったレンダリング」、()=> {
const {container} =レンダリング(< toggleButton / gt;
)
期待(コンテナ).tomatchsnapshot()
)
それ(「クリックの上にライトUIをレンダリング」、()=> {
const {container、getbytestid} =レンダリング(< togglebutton / gt;)
FireEvent.Click(GetByTestID( 'mode-toggle'))
期待(コンテナ).tomatchsnapshot()
【126】
これは素晴らしいです:私たちは手動でサイトに行って周りを見てから、ボタンをクリックしてもう一度見てください - その間にあなたは認めるかもしれません、あなたは何かを忘れるか忘れないでしょう!今、同じ入力を考えると、コンポーネントの同じ出力を期待できるようにすることができます。
IDのテストに関しては、個人的に使用を嫌います
Data-Testid
DOMに何かを見つけるために。結局のところ、テストのオブジェクトは、ユーザーがしているものを模倣し、何が起こるのかをテストすることです。
Data-Testid
データ - TESTIDSはあなたのQAエンジニアにとって便利なことになるでしょうが、あなたのQAエンジニアのために便利になるでしょう(Boxoutを参照)。
代わりに、私たちは使うことができます
GetByText()
そして私たちのボタンのテキストを渡します。その方法は、より多くの動作特有のものです。
08.モックとスパイ機能
時には、関数への呼び出しをテストする必要があるかもしれませんが、その機能はテストの範囲外です。たとえば、PIの値を特定の数の小数に計算する関数を含む別のモジュールがあります。
そのモジュールの結果が何であるかをテストする必要はありません。私は私の関数が期待どおりにしていることをテストする必要があります。これがなぜなのかについての詳細は、ボックスユニットと統合テストを参照してください。この場合、その機能を「モック」させることができます。
const getpivalue = jest.fn()
それ( 'clickon'の関数を呼び出します '=> {
const {container、getbytestid} =レンダリング(< togglebutton / gt;)
FireEvent.Click(GetByTestID( 'mode-toggle'))
期待(GetPivalue).toHaveBeenCalledTimes(1)
)
【126】
関数
TohaveBeenCalledTimes()
私たちを可能にするテストライブラリの多くのヘルパー関数の1つです
関数の出力をテストする。これにより、テストをテストしたいモジュールのみにアクセスするだけでなく、その関数を呼び出すときにどのような機能を実行するかを確認することもできます。
09.反応アプリケーションのテストを開始します
(イメージ:©React Testing Library)
書き込みテストは、始めるのに少し困難になるようです。私はこのチュートリアルが試してみるのにもう少し自信を与えてくれることを願っています。私は私のアプリケーションのテストを書いたので、私は本当に戻ることができません。
コンポーネントのテスト方法についての詳細については、訪問
テストライブラリを反応させる
または
反応試験例
。
あなたが始めるのを助けるためにいくつかのコースを探しているなら、
Kent C Doddsによるもの
(React Testing Libraryを書いて維持する人)が人気があります。私も楽しんだ
これはレベルアップチュートリアルの上にあります
それは私が私のコードのためのテストを書いたのを始めたのです。
覚えておいてください、あなたが複雑なサイトを構築しているなら、あなたはあなたのものを手に入れたいです
ウェブホスティング
サービススポットオン。そして、そのサイトがたくさんの資産を含む可能性が高い場合は、信頼できるものに保管してください。
クラウドストレージ
重要です。
このコンテンツはもともと登場しました
ネットマガジン
。私たちの詳細を読む
Webデザイン記事ここにあります
。
続きを読む:
-
HTML6:それは何ですか?それはいつ到着していますか?
-
HTMLコードを早く書きなさい
-
モバイルアプリデザイン:初心者のガイド