使用pg进行postgre数据库写入的测试
import { afterAll, describe, it, expect } from 'vitest'
import { Pool } from 'pg'
import { db } from './your-db'
describe('createUser', () => {
const pool = new Pool()
afterAll(async () => {
await pool.query('DROP TABLE IF EXISTS users')
await pool.end()
})
it('inserts a user to database', async () => {
const userDraft = {
email: 'example@gmail.com',
verificationCode: '123456'
}
const createdUser = await db.createUser(userDraft)
const user = await pool.query('SELECT * FROM user WHERE id = $1', [createdUser.id])
expect(user.email).toBe(userDraft.email)
})
})
使用Pool的end方法,因为直接使用pool的query方法时,会从池里取一个client执行SQL,并且在执行结束后自动释放该client。
如果是使用pool的connect方法,则会取出一个client,需要手动使用该client去query,且需要手动调用release方法讲该client放回池里。