関数とメソッドをテストする Chai

 正しい例外をスローするための関数のテスト

throw 例外をテストするには、によって提供されるアサーションを 使用できます Chai。 このアサーションを使用すると、スローされる例外のタイプと、検証する必要がある追加の詳細を指定できます。 このアサーションをテスト ケースに含めることで、関数が期待どおりに動作し、エラー状態を適切に処理できることを確認できます。

2 つの数値を除算する関数がある例を考えてみましょう。 ゼロで除算するときに関数が例外をスローするようにしたいと考えています。 Chai の throw アサーションを使用して、ゼロで除算するときに関数が正しく a をスローするかどうかをチェックする テスト ケースを作成できます DivideByZeroError

const { expect } = require('chai');  
  
function divide(a, b) {  
  if(b === 0) {  
    throw new Error('DivideByZeroError');  
  }  
  return a / b;  
}  
  
describe('divide',() => {  
  it('should throw DivideByZeroError when dividing by zero',() => {  
    expect(() => divide(10, 0)).to.throw('DivideByZeroError');  
  });  
  
  it('should return the correct result when dividing two numbers',() => {  
    expect(divide(10, 5)).to.equal(2);  
  });  
});  

上記の例では、アサーションを使用して、ゼロで除算するときに 関数が a をスローする to.throw ことを確認します 。 アサーションは関数でラップされているため、例外をキャッチして必要なチェックを実行できます。 divide DivideByZeroError

例外を正しくスローするためのテストを組み込むことで、関数がエラー条件を適切に処理し、予期しない状況が発生したときに意味のあるフィードバックを提供できるようになります。 これにより、コードの全体的な品質と信頼性が向上します。

結論として、例外をスローする関数のテストはソフトウェア テストの重要な側面です。 Chai のアサーション を使用すると throw 、関数が必要に応じて予期された例外をスローすることを簡単に検証できます。 これらのテストをテスト戦略に組み込むことで、アプリケーションの堅牢性を強化し、より良いユーザー エクスペリエンスを提供できます。

「Node.js、 Mocha 、および Chai 」シリーズの 3 回目の記事では、 を使用して関数とメソッドをテストする方法を検討します Chai。 Chai は、コード内の値と結果をテストするための強力なアサーション ライブラリです JavaScript。

 

オブジェクトのメソッドとその動作のテスト

オブジェクトのメソッドを検証するには、 や などのテスト フレームワークによって提供されるアサーションを使用でき Mocha ます Chai。 これらのアサーションにより、オブジェクトのプロパティと動作についてアサーションを行うことができます。

加算、減算、乗算、除算のメソッドを使用して呼び出されるオブジェクトがある例を考えてみましょう calculator。 これらのメソッドが正しい結果を返すようにしたいと考えています。 Chai のアサーションを 使用してテスト ケースを作成し、これらのメソッドの動作を検証できます。

const { expect } = require('chai');  
  
const calculator = {  
  add:(a, b) => a + b,  
  subtract:(a, b) => a- b,  
  multiply:(a, b) => a * b,  
  divide:(a, b) => a / b,  
};  
  
describe('calculator',() => {  
  it('should return the correct sum when adding two numbers',() => {  
    expect(calculator.add(5, 3)).to.equal(8);  
  });  
  
  it('should return the correct difference when subtracting two numbers',() => {  
    expect(calculator.subtract(5, 3)).to.equal(2);  
  });  
  
  it('should return the correct product when multiplying two numbers',() => {  
    expect(calculator.multiply(5, 3)).to.equal(15);  
  });  
  
  it('should return the correct quotient when dividing two numbers',() => {  
    expect(calculator.divide(6, 3)).to.equal(2);  
  });  
});  

上の例では、 Chai の expect アサーションを使用して、オブジェクトのメソッドが calculator 期待した結果を返すことを確認します。 各テスト ケースは特定のメソッドに焦点を当てており、指定された入力に対して正しい出力が返されるかどうかをチェックします。

これらのテスト ケースを実行することで、オブジェクトのメソッドが期待どおりに動作し、正確な結果が得られることを確認できます calculator

メソッドの戻り値をチェックするだけでなく、アサーションを使用してオブジェクトの他のプロパティや動作を検証することもできます。 Chai は、プロパティ値のチェック、メソッド呼び出しの検証など、オブジェクトに対してさまざまな種類のアサーションを行うことを可能にする幅広いアサーションを提供します。

オブジェクトのメソッドを徹底的にテストすることで、その正確性と信頼性を確保でき、コードベース全体の品質に貢献します。