テストは開発プロセスの重要な部分であり、アプリケーションが期待どおりに動作し、長期にわたって堅牢性が維持されることを確認します。 Cypress は、優れた開発者エクスペリエンスを提供し、React などの最新の JavaScript フレームワークとシームレスに統合する、強力なエンドツーエンドのテスト フレームワークです。この投稿では、Cypress を使用して React アプリケーションをセットアップおよびテストする方法を、実践的な例とベスト プラクティスに焦点を当てて説明します。
React アプリケーションで Cypress の使用を開始するには、次の手順に従います。
ステップ 1: Cypress をインストールする
まず、Cypress を開発依存関係として React プロジェクトにインストールします。
npm install cypress --save-dev
ステップ 2: Cypress を構成する
以下を実行して Cypress テスト ランナーを開きます:
npx cypress open
これにより、プロジェクト内にデフォルト設定とサンプル テストを含む cypress フォルダーが作成されます。必要に応じて、cypress.json ファイルの構成をカスタマイズできます。
ステップ 3: テスト ファイルを作成する
cypress/e2e ディレクトリ内に、新しいテスト ファイル (react-app.spec.js など) を作成します。このファイルには、React アプリケーションの Cypress テストが含まれます。
React 用の Cypress テストの作成
React アプリケーションの基本的なテストをいくつか書いてみましょう。コンポーネントのレンダリング、インタラクション、アサーションについて説明します。
例: React コンポーネントのテスト
Counter という単純な React コンポーネントがあるとします:
import React, { useState } from 'react'; const Counter = () => { const [count, setCount] = useState(0); return ( <div> <h1>Counter: {count}</h1> <button onClick={() => setCount(count + 1)}>Increment</button> <button onClick={() => setCount(count - 1)}>Decrement</button> </div> ); }; export default Counter;
Cypress テストを作成して、コンポーネントの動作を検証できます。
describe('Counter Component', () => { beforeEach(() => { cy.visit('/'); }); it('should render the counter with initial value', () => { cy.get('h1').contains('Counter: 0'); }); it('should increment the counter', () => { cy.get('button').contains('Increment').click(); cy.get('h1').contains('Counter: 1'); }); it('should decrement the counter', () => { cy.get('button').contains('Increment').click(); cy.get('button').contains('Decrement').click(); cy.get('h1').contains('Counter: 0'); }); });
これらのテストでは:
フォーム入力のテスト
ユーザー名とパスワードを入力するログイン フォームがあるとします。テスト方法は次のとおりです:
describe('Login Form', () => { beforeEach(() => { cy.visit('/login'); }); it('should allow a user to type in the username and password', () => { cy.get('input[name="username"]').type('testuser'); cy.get('input[name="password"]').type('password123'); }); it('should show an error message for invalid credentials', () => { cy.get('input[name="username"]').type('invaliduser'); cy.get('input[name="password"]').type('wrongpassword'); cy.get('button[type="submit"]').click(); cy.get('.error-message').should('be.visible').and('contain', 'Invalid credentials'); }); it('should redirect to dashboard on successful login', () => { cy.get('input[name="username"]').type('testuser'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); }); });
API リクエストのモック
Cypress を使用して API リクエストをインターセプトおよびモックし、バックエンドに依存せずにさまざまなシナリオをテストできます。
describe('API Mocking', () => { beforeEach(() => { cy.intercept('POST', '/api/login', { statusCode: 200, body: { token: 'fakeToken' } }).as('loginRequest'); cy.visit('/login'); }); it('should mock a successful login', () => { cy.get('input[name="username"]').type('testuser'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.wait('@loginRequest').its('response.statusCode').should('eq', 200); cy.url().should('include', '/dashboard'); }); });
Cypress は、React アプリケーションをテストするための堅牢で開発者に優しい方法を提供します。このガイドで概説されている手順と例に従うことで、React プロジェクトで Cypress をセットアップし、効果的なエンドツーエンド テストを作成できます。 Cypress の強力な機能とベスト プラクティスを活用することで、信頼性が高く保守しやすい高品質のテストを作成し、React アプリケーションが期待どおりに動作するようにすることができます。
テストをお楽しみください!
以上がCypress を使用した React アプリケーションのテスト: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。