JestとSupertestを用いたノードエクスプレスAPIにおける実装試験


テストでは、アプリケーションのコードの最小部分の動作を確認することが重要です.それはあなたのコードの質を改善し、バグの修正に費やす時間とお金の量を減らすことができます.さらに、ユニットテストでは、開発ライフサイクルの初期にバグを見つけることができます.ノードで.JSはユニットテストの実行に利用可能なフレームワークがたくさんあります.その中には
モカ、ジェスト、ジャスミン等.
以下にJestとSupertestを通して単体テストを見ていきます.
Jestは人気のテストフレームワークです.それは開発され、Facebookによって維持されます.JESTの主要な特徴の一つは、それがよく文書化され、並列テストを実行することをサポートしています.つまり、それぞれのテストはパフォーマンスを最大化するために独自のプロセスで実行されます.また、テスト、カバレッジ、スナップショットのようないくつかの機能が含まれます.
次のコマンドを使用してインストールできます.npm install --save-dev jestデフォルトでは、Jestはルートフォルダ内の“test”と呼ばれるフォルダー内のすべてのテストファイルを見つけます.
Jestを使用したテストの例
const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Jestによってサポートされるいくつかのアサート型です
戸辺
EG :期待(2 + 2).tobe ( 4 )
等高線
予期します.等高線( 1 : 1 , 2 : 2 )
ない.戸辺
期待される( 2 + 2 ).ない.十兵衛( 5 )
tobenull , tobeundefined , tobeamererthan , tobelesthan , toincludes , tomatchなど.
以下のコマンドを使用して個々のファイルを実行できますjest <test file name>テストフォルダ内のすべてのテストファイルをパッケージに追加するスクリプトを実行します.JSON"test": "jest"NPMのテストは、テストを実行するために使用することができます
APIエンドポイントテストは、Jestとスーパーテストと呼ばれる別のライブラリの助けを借りて行うことができます.
スーパーテストのインストールnpm install --save-dev supertestテストAPIでは、以下に示すようにサンプルAPIテストを実装できます.
const request = require('supertest')
const app = require('./app')
const baseUrl = 'http://localhost:8000'

describe('sends users', (app) => {
  it('should return users', async () => {
    const res = await request(baseUrl)
      .get('/getUsers');
    expect(res.statusCode).toEqual(200);
    expect(res.body).toHaveProperty('users');
  });
});

describe('Post Endpoints', () => {
  it('should create a new post', async () => {
    const res = await request(baseUrl)
      .post('/posts')
      .send({
        userId: 1,
        title: 'test',
      })
    expect(res.statusCode).toEqual(200)
    expect(res.body).toHaveProperty('post')
  })
})

NPMテストを使用してテストを実行し、テスト結果は以下のようにターミナルコンソールで見ることができます.

詳細については、
https://jestjs.io/
https://www.npmjs.com/package/supertest