Type Script의 Node입니다.테스트당 DB(MySQL) 함수를 js+Jest로 재설정

MySQL 클라이언트를 먼저 설치합니다.
연결이 된다면 무엇이든지 할 수 있기 때문에 별 수가 가장 많고 유형적으로 정의된 이곳을 선택했다.
https://github.com/mysqljs/mysql
npm install --save-dev mysql @types/mysql
DB를 먼저 파괴하고 재생성합니다.
import { createConnection } from "mysql";
import * as fs from "fs";

export async function resetDB() {
  const connection = createConnection({
    host: "localhost",
    user: "root",
    password: "",
    multipleStatements: true,
  });
  connection.connect();
  connection.query("DROP DATABASE IF EXISTS test_db");
  connection.query("CREATE DATABASE test_db");
  connection.query("use test_db");
다음에 초기 데이터를 넣습니다.
테스트용 데이터를 어떻게 관리하는지에 따라 다르지만, 이번에는 덤프된 SQL 파일이 있어서 읽고 실행하기로 했습니다.
  // test.dump を初期データとして入れるよ
  const seedSQLFile = fs.readFileSync(
    "./docker/compose/db/init/test.dump",
    "utf8"
  );
  const queries = seedSQLFile.split(";");
  for (const query of queries) {
    await new Promise<void>((resolve) =>
      connection.query(query).on("result", resolve)
    );
  }
마지막으로 연결을 잠그는 것을 잊지 마세요.
  connection.end();
}
Jest는 개별 테스트 전에 수행됩니다.beforeEach는 다음과 같습니다.잘 사용하지 않으면 시험이 리셋 처리를 기다리지 않기 때문에 주의해야 한다☝️
beforeEach(async () => {
  await resetDB();
});

좋은 웹페이지 즐겨찾기