初心者のための反応におけるテスト駆動開発入門
16519 ワード
テスト駆動開発(TDD)の最初の規則は、機能をコーディングする前にテストを書くことです.いくつかのバックエンド仕事をするとき、それはより直観的に聞こえます.🚀
本稿では、簡単な構成要素と反応してTDDを探索する.
この記事では、次のコンポーネントを再現します.シンプルでとても醜い🤧-- カウンター.
さて、それは私たちがここで理解したいことのために仕事をするでしょう.なぜなら、私たちは審美的なものよりも機能性に集中しているからです.💄
まず第一に、シンプルな反応プロジェクトを作成します.
新しいディレクトリを作成する
それはあなたが本当にコードとテストに行くものについて考えることを余儀なくされているため、機能のためのより良いアーキテクチャを確立するのに役立ちます.
理想的なコンポーネントは、プロップと呼ばれる
タグ.
すごい!まずテストを書きましょう.
インサイド
これで、最初のテストを書くことができます.
コンポーネントはレンダリングされますか? カウンタは、値として正確に2を示していますか?
すごい!コンポーネントを動かして、書きましょう.
コンポーネントディレクトリ内で、新しいファイルを作成します
いいねいいね私たちはすばらしい仕事をした.次の手順は、このコンポーネントを
この場合、我々は現在、値を変更するボタンを追加している
この機能の要件は以下の通りです. ボタンをクリックして表示される値を1増加 かなり簡単な右?まずテストを書きましょう.
The
必要なツールをインポートすることから始めましょう.我々は、画面上の[ Click ]をクリックして[イベント]ボタンをクリックして、カウンタ内の値を増やすために、テスト機能を非同期になります.
インサイド
その後、すべてのテストを再度実行します.そして、それは緑でなければなりません.🟢
そして、おめでとう!我々は、ちょうどTDDを使用していくつかの反応を行ってきた.次の記事では、我々はTDDDにはRedUxとThunkで深く潜るよ.リモートバックエンドから独立した完全なテスト環境を設定します.🔥
かなり面白い、右?さて、あなたがそれについて情報を得たいならば、私はニュースレターを始めています.私が10人の加入者を通過するならば、私は毎週それからキックを始めます.🚀
購読できますhere .
記事投稿bloggu.io . 無料でお試しください.
本稿では、簡単な構成要素と反応してTDDを探索する.
特徴
この記事では、次のコンポーネントを再現します.シンプルでとても醜い🤧-- カウンター.
さて、それは私たちがここで理解したいことのために仕事をするでしょう.なぜなら、私たちは審美的なものよりも機能性に集中しているからです.💄
プロジェクトのセットアップ
まず第一に、シンプルな反応プロジェクトを作成します.
yarn create react-app react-test-driven-development
プロジェクトが作成されると、プロジェクトの実行によってすべてが動作することを確認します.cd react-test-driven-development
yarn start
そして、あなたは何か似ているhttp://localhost:3000 . カウンタ機能の書き込み
新しいディレクトリを作成する
src
ディレクトリcomponents
. このディレクトリには、私たちが書いているコンポーネントが含まれます.そして新しいディレクトリの中にCounter.test.js
. TDDを行うときに述べたように、機能をコーディングする前にテストを書きます.それはあなたが本当にコードとテストに行くものについて考えることを余儀なくされているため、機能のためのより良いアーキテクチャを確立するのに役立ちます.
カウンタコンポーネントの説明
理想的なコンポーネントは、プロップと呼ばれる
value
. この値は、次に、画面上に表示されますタグ.
すごい!まずテストを書きましょう.
テストを書く
インサイド
Counter.test.js
次のコンテンツを追加します.import { render, screen } from '@testing-library/react';
import Counter from "Counter";
テストを書くために必要なツールをインポートすることから始めます.2行目を心配しないでくださいCounter
コンポーネント.TDDの目標は、テストが最初に機能を書き込む前に失敗することを確認することです.これで、最初のテストを書くことができます.
test('renders counter component', () => {
render(<Counter value={2} />);
const counterElement = screen.getByTestId("counter-test");
});
ここでは、我々はレンダリングCounter
DOM内のコンポーネントと、要素を取得します.ここでテストする2つのことがあります.test('renders counter component', () => {
render(<Counter value={2} />);
const counterElement = screen.getByTestId("counter-test");
// Testing that the counter element is rendered
expect(counterElement).toBeInTheDocument();
// Testing that the counter element has the correct value
expect(counterElement).toHaveTextContent("2");
});
すごい!コマンドラインで、次のコマンドを実行してテストを実行します.yarn test
コマンドは自然に失敗する.すごい!コンポーネントを動かして、書きましょう.
コンポーネントの書き込み
コンポーネントディレクトリ内で、新しいファイルを作成します
Counter.jsx
. このファイルの中に次のコンテンツを追加します.import React from "react";
// This is the component we are testing
function Counter(props) {
const { value } = props;
return (
<p data-testid="counter-test">
{value}
</p>
);
}
export default Counter;
今テストを再度実行し、すべてが緑色にする必要があります.いいねいいね私たちはすばらしい仕事をした.次の手順は、このコンポーネントを
App.js
とabutton
状態変化を引き起こす.そして、我々もこれのためにTDDに行きます.You may have an issue with a similar error in the terminal after running the tests.
Warning: ReactDOM.render is no longer supported in React 18...
この答えをチェックStackOverflow 解決方法を確認するにはフルカウンタ機能を書く
この場合、我々は現在、値を変更するボタンを追加している
Counter.jsx
. コードを直接書くつもりですApp.js
, 最初にテストを書きましょうApp.test.js
ファイル.要件
この機能の要件は以下の通りです.
テストを書く
The
testing-library
ボタンでアクションをトリガーするためのツールを提供します.非常に良い!必要なツールをインポートすることから始めましょう.我々は、画面上の[ Click ]をクリックして[イベント]ボタンをクリックして、カウンタ内の値を増やすために、テスト機能を非同期になります.
import { render, screen } from '@testing-library/react';
import App from './App';
import userEvent from "@testing-library/user-event";
The UserEvent
クリックすると、入力、および大いに多くのようなユーザートリガのアクションをシミュレートするツールです.そして、テストです.import { render, screen } from '@testing-library/react';
import App from './App';
import userEvent from "@testing-library/user-event";
describe('Render the counter with Button', () => {
render(<App />);
it("render counter", async () => {
const appElement = screen.getByTestId('app-test');
expect(appElement).toBeInTheDocument();
// Testing that the counter element has the correct default value
const counterElement = screen.getByTestId('counter-test');
expect(counterElement).toHaveTextContent('0');
// Retrieving the button element
const buttonElement = screen.getByTestId('button-counter-test');
expect(buttonElement).toBeInTheDocument();
// Triggering the click event on the button
await userEvent.click(buttonElement);
// Testing that the counter element has the correct value
expect(counterElement).toHaveTextContent('1');
})
});
すごい!テストは正常に失敗します.機能を書きましょう.フルカウンタ機能を書く
インサイド
App.js
ファイルを次のコンテンツを追加します.import React from "react";
import Counter from "./components/Counter";
function App() {
const [count, setCount] = React.useState(0);
return (
<div data-testid="app-test">
<Counter value={count} />
<button data-testid="button-counter-test" onClick={() => setCount(count + 1)}>Increase</button>
</div>
);
}
export default App;
我々は反応を使用しています.USENTは、状態を追跡し、変更するために管理する.その後、すべてのテストを再度実行します.そして、それは緑でなければなりません.🟢
そして、おめでとう!我々は、ちょうどTDDを使用していくつかの反応を行ってきた.次の記事では、我々はTDDDにはRedUxとThunkで深く潜るよ.リモートバックエンドから独立した完全なテスト環境を設定します.🔥
かなり面白い、右?さて、あなたがそれについて情報を得たいならば、私はニュースレターを始めています.私が10人の加入者を通過するならば、私は毎週それからキックを始めます.🚀
購読できますhere .
記事投稿bloggu.io . 無料でお試しください.
Reference
この問題について(初心者のための反応におけるテスト駆動開発入門), 我々は、より多くの情報をここで見つけました https://dev.to/koladev/introduction-to-test-driven-development-in-react-for-beginners-260fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol