スコーピングJest試験


これまでのところ、我々は最高レベルで実行しているテストを見ました.すべてのテストは基本的に同じスコープです.
しかし、Jestは私たちにスコープダウンするオプションを与えます.これは、定期的なテストのセットアップのための超簡単にすることができます.
例えば、前の記事ではJest recurring actions , スコープの使用の主要な例です.

スコープの定義


Jestでスコープを定義するには、describe すべてのテストをラップする機能.
describe('user related actions', () => {
  test('Create new user', () => {
    expect(createUser('Chris', 'p4sSw0rD')).toBe(true);
  });

  test('Update user', () => {
    expect(updateUser(1, 'Chris new name')).toBe(true);
  });
});
さて、これらの2つのテストは、このスコープ内で実行されます.また、それを整理するのに最適ですが、我々はこのスコープのいくつかの利点を得る.
たとえば、このスコープでは独自のアクションを取得できます.これらの定義されたアクションはこのスコープでのみ起動されます.
しかし、グローバルスコープ定義のアクションも発射されます!
例えば、パブリックデータベースを持っているとしましょうが、1つのセクションでは、趣味のデータベースを適用したいと思います.
beforeAll(() => {
  return createDatabase();
});

beforeEach(() => {
  return populateUsers();
});

afterEach(() => {
  return clearUsers();
});

afterAll(() => {
  return removeDatabase();
});

test('Add a new user', () => {
  expect(addUser('Chris')).toBe(true);
});

describe('hobby related tasks', () => {
  beforeEach(() => {
    return populateHobbies();
  });

  beforeEach(() => {
    return clearHobbies();
  });

  test('Add a new hobby', () => {
    expect(addHobby(1, 'Photography')).toBe(true);
  });
});
このコードを実行し、何が起こるかを見てみましょう.
  • 前に
  • それぞれの前に
  • ユーザーテスト
  • それぞれの後に
  • それぞれの前に
  • 各々の前に
  • ホビーテスト
  • 毎回(趣味の範囲)
  • それぞれの後に
  • 結局
  • ご存知のように、実行の完全な謎が、それを見ることが不可欠ですbefore each and after each 発火.
    スコープは、使用する変数を定義して上書きするためにも使用できます.
    たとえば、テストケースを書きたい場合には、ログインするユーザが異なるかもしれません.
    describe('user related tasks', () => {
      const loggedUser = 1;
      test('Add a new user', () => {
        console.log(`adding new user: ${loggedUser}`);
      });
    });
    
    describe('hobby related tasks', () => {
      const loggedUser = 2;
      test('Add a new hobby', () => {
        console.log(`adding new hobby for: ${loggedUser}`);
      });
    });
    
    ご覧の通り、我々はloggedUser 2回、このシーケンスの出力は予想通りになります.
  • 新しいユーザの追加: 1
  • 新しい趣味を加えること:2
  • 私はこれがあなたにスコープスコープのテストブロックを定義する優れた最初の導入を与えることを願っています.

    読んでいただきありがとうございます、接続しましょう!


    私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or