コードを作成する前に、関数が何をすべきかを考えます。})何の機能を記述しているか。ブロックのことです、をグループ化するために使います。ついて記述しています。タイトルでは、特定のユースケースを人間が読めるように記述し、2つ目の引数は、それをテストするための関数です。ブロックの中のコードです。実装が正しければエラーなく実行されます。powが期待通り動作するかをチェックするために使われます。assert.equal。それは引数を比較し、等しくない場合にエラーを返します。等しいかをチェックします。他のタイプの比較やチェックもたくさんあります。開発フローは通常このようになります:最も基本的な機能のテストと一緒に、初期仕様が書かれます。初期の実装がされます。エラーが表示されます。すべてが動作するまで修正を行います。テストと一緒に、動作する初期の実装ができあがります。実装でサポートされていない可能性のある、より多くのユースケースを仕様(テスト)に追加します。テストは失敗し始めます。3に戻り、テストのエラーが無くなるまで実装を更新します。機能が完成するまで3-6のステップを繰り返します。仕様を書き、それを実装し、テストが通ることを確認し、さらにテストを書いて、それらが動作することを確認します。最終的に、動作する実装とテストができ上がります。初期仕様を持っています。実装していきましょう。その前にテストが動作すること(テスト自体は失敗しますが)を試してみましょう。含む共通のテスト関数と、テストを実行するメインの機能を提供します。多くのアサーションを持つライブラリ。様々なアサーションを使う事ができます。関数をスパイするためのライブラリで、組み込み関数とそれ以上のものをエミュレートします。私たちは、後でこれらを必要とします。これらのライブラリはブラウザとサーバサイド両方のテストで利用することができます。ここでは、ブラウザの場合について進めます。