クリーンなコードを理解する: 単体テスト ⚡
ソフトウェア開発において、単体テストはコードの正確性を確認するのに役立つ重要な実践です。
『Clean Code: A Handbook of Agile Software Craftsmanship』の第 9 章「単体テスト」では、クリーンで効果的な単体テストを作成するための原則と実践方法について詳しく説明しています。
この記事では、この章の重要なポイントを要約し、これらの概念を説明するために JavaScript の例を示します。
?単体テストが重要な理由
単体テストには、コードの個々のユニットまたはコンポーネントに対するテストを作成して、それらが期待どおりに機能することを確認することが含まれます。単体テストの主な目的は次のとおりです:
1- バグの早期検出: 開発中に問題が本番環境に到達する前に検出します。
2- リファクタリングの促進: コードへの変更によって既存の機能が損なわれないようにします。
3- コードの動作を文書化する: コードがどのように使用されるかを文書化します。
?効果的な単体テストの原則
⚡ 一度に 1 つずつテストする
各単体テストは、機能の 1 つの側面に焦点を当てる必要があります。これにより、テストの理解と保守が容易になります。テストが失敗した場合、問題がどこにあるのかを正確に知ることができます。
function add(a, b) { return a + b; } // Test case for the add function function testAdd() { // Test adding positive numbers assertEqual(add(2, 3), 5, '2 + 3 should be 5'); // Test adding negative numbers assertEqual(add(-1, -1), -2, '-1 + -1 should be -2'); } // A simple assertion function function assertEqual(actual, expected, message) { if (actual !== expected) { throw new Error(message); } }
⚡ テストを読みやすくする
テストは読みやすく、理解しやすいものである必要があります。テスト関数にはわかりやすい名前を使用し、アサーションを明確にします。これにより、他の人 (そしてあなた自身) が各テストで何を検証しているのかをすぐに把握することができます。
function isEven(number) { return number % 2 === 0; } // Descriptive test function function testIsEven() { assertEqual(isEven(4), true, '4 should be even'); assertEqual(isEven(5), false, '5 should be odd'); }
⚡ 明確でわかりやすい名前を使用してください
テスト ケースの名前は、何をテストしているのかを説明する必要があります。これにより、テストの可読性と保守性が向上します。
function calculateTotalPrice(items) { return items.reduce((total, item) => total + item.price, 0); } // Descriptive test case names function testCalculateTotalPrice() { assertEqual(calculateTotalPrice([{ price: 10 }, { price: 20 }]), 30, 'Total price should be 30 for items costing 10 and 20'); assertEqual(calculateTotalPrice([{ price: 5 }]), 5, 'Total price should be 5 for a single item costing 5'); }
⚡ テストを独立した状態に保つ
各テストは他のテストから独立している必要があります。共有状態に依存するテストは、不安定なテストにつながり、デバッグを困難にする可能性があります。
function multiply(a, b) { return a * b; } // Independent test cases function testMultiply() { assertEqual(multiply(2, 3), 6, '2 * 3 should be 6'); assertEqual(multiply(0, 10), 0, '0 * 10 should be 0'); }
⚡ モックとスタブを適切に使用する
モックとスタブは、依存関係をシミュレートすることにより、テスト対象のコード単位を分離するのに役立ちます。ただし、テストが過度に複雑になることを避けるために、慎重に使用してください。
// Example of using a mock for a database call function getUser(id) { // Imagine this function makes a database call return database.getUserById(id); } function testGetUser() { const mockDatabase = { getUserById: (id) => ({ id, name: 'John Doe' }), }; const result = getUser(1, mockDatabase); assertEqual(result.name, 'John Doe', 'User name should be John Doe'); }
⚡ テストを自動化する
単体テストの実行を自動化し、定期的に実行されるようにします。継続的インテグレーション (CI) ツールは、変更が加えられるたびにテストを自動的に実行するのに役立ちます。
Jest などのテスト フレームワークを使用している場合は、package.json でスクリプトを設定できます。
"scripts": { "test": "jest" }
npm テストを実行すると、すべてのテストが実行され、そのステータスに関するフィードバックが提供されます。
結論
高品質のコードを維持するには、クリーンで効果的な単体テストを作成することが不可欠です。
クリーン コードの第 9 章で概説されている原則に従うことで、テストが信頼性が高く、理解しやすく、価値のあるものであることを保証できます。
これらのプラクティスを JavaScript コードに実装すると、テストの品質が向上するだけでなく、より堅牢で保守しやすいコードベースにも貢献します。
コーディングを楽しんでください!
以上がクリーンなコードを理解する: 単体テスト ⚡の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

このチュートリアルでは、chart.jsを使用してパイ、リング、およびバブルチャートを作成する方法について説明します。以前は、4つのチャートタイプのchart.js:ラインチャートとバーチャート(チュートリアル2)、およびレーダーチャートと極地域チャート(チュートリアル3)を学びました。 パイとリングチャートを作成します パイチャートとリングチャートは、さまざまな部分に分かれている全体の割合を示すのに理想的です。たとえば、パイチャートを使用して、サファリの男性ライオン、女性ライオン、若いライオンの割合、または異なる候補者が選挙で受け取る票の割合を示すことができます。 パイチャートは、単一のパラメーターまたはデータセットの比較にのみ適しています。パイチャートのファンの角度はデータポイントの数値サイズに依存するため、パイチャートは値のあるエンティティをゼロ値で描画できないことに注意してください。これは、割合がゼロのエンティティを意味します

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
