-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CRUDにテストを追加しましょう #1213
Comments
はい、SvelteKitアプリでPrismaをORMとして使用し、Vitestを使用してCRUD操作のテストを実現することができます。以下に、Vitestを使用してPrismaのCRUD操作をテストする方法を示します。 1. Vitestのセットアップまず、Vitestをプロジェクトにインストールします。 npm install -D vitest 次に、 import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
environment: 'node',
},
}); 2. PrismaのセットアップPrismaのセットアップが完了していることを確認します。 3. テストデータベースの設定テスト用のデータベースを設定します。通常のデータベースとは別に、テスト用のデータベースを使用することをお勧めします。 DATABASE_URL="postgresql://user:password@localhost:5432/testdb" 4. テスト用のPrismaクライアントを作成テスト用のPrismaクライアントを作成します。 import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient({
datasources: {
db: {
url: process.env.DATABASE_URL,
},
},
});
export default prisma; 5. CRUD操作のテストを作成CRUD操作のテストを作成します。例えば、 import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import prisma from '../src/lib/prisma';
import { updateTaskResult, getTaskResult } from '../src/lib/services/task_results';
describe('Task Results CRUD', () => {
beforeAll(async () => {
// テスト用のデータベースを初期化
await prisma.$executeRaw`TRUNCATE TABLE TaskResults CASCADE`;
});
afterAll(async () => {
// Prismaクライアントを閉じる
await prisma.$disconnect();
});
it('should create and update a task result', async () => {
const taskId = 'test-task';
const userId = 'test-user';
const submissionStatus = 'completed';
// タスク結果を作成
await updateTaskResult(taskId, submissionStatus, userId);
// タスク結果を取得
const taskResult = await getTaskResult(taskId, userId);
// 検証
expect(taskResult).not.toBeNull();
expect(taskResult.status_name).toBe(submissionStatus);
});
}); 6. テストの実行テストを実行します。 npx vitest まとめこれで、Vitestを使用してPrismaのCRUD操作をテストすることができます。Vitestの設定、Prismaのセットアップ、テストデータベースの設定、テスト用のPrismaクライアントの作成、CRUD操作のテストの作成と実行の手順を示しました。これにより、SvelteKitアプリでPrismaを使用したCRUD操作のテストを効率的に行うことができます。 |
はい、Prismaのクライアントメソッドを使用してデータベースを初期化する方法もあります。これにより、生SQLを使用せずにデータベースの初期化を行うことができます。以下に、Prismaのクライアントメソッドを使用してデータベースを初期化する方法を示します。 1. テストデータベースの初期化Prismaのクライアントメソッドを使用して、テストデータベースを初期化する方法を示します。 2. テストコードの修正以下に、修正後のテストコードを示します。 import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import prisma from '../src/lib/prisma';
import { updateTaskResult, getTaskResult } from '../src/lib/services/task_results';
describe('Task Results CRUD', () => {
beforeAll(async () => {
// テスト用のデータベースを初期化
await prisma.taskAnswer.deleteMany({});
await prisma.taskResult.deleteMany({});
});
afterAll(async () => {
// Prismaクライアントを閉じる
await prisma.$disconnect();
});
it('should create and update a task result', async () => {
const taskId = 'test-task';
const userId = 'test-user';
const submissionStatus = 'completed';
// タスク結果を作成
await updateTaskResult(taskId, submissionStatus, userId);
// タスク結果を取得
const taskResult = await getTaskResult(taskId, userId);
// 検証
expect(taskResult).not.toBeNull();
expect(taskResult.status_name).toBe(submissionStatus);
});
}); 説明
まとめPrismaのクライアントメソッドを使用してデータベースを初期化することで、生SQLを使用せずにデータベースの初期化を行うことができます。これにより、コードの可読性とメンテナンス性が向上します。 |
WHY
CRUDのテストの障壁
TODO
The text was updated successfully, but these errors were encountered: