我正试图连接到一个测试数据库以在其上运行单元测试,但由于某种原因,它失败了但当我连接到我的开发数据库时,一切都很好
那是我的数据库.ts
import dotenv from 'dotenv'
import { Pool } from 'pg'
dotenv.config()
const POSTGRES_HOST = process.env.POSTGRES_HOST
const POSTGRES_USER = process.env.POSTGRES_USER
const POSTGRES_PASSWORD: string = process.env.POSTGRES_PASSWORD!
const POSTGRES_DB = process.env.POSTGRES_DB
const POSTGRES_TEST_DB = process.env.POSTGRES_TEST_DB
const ENV = process.env.ENV
let database
if (ENV === 'dev') {
database = {
host: POSTGRES_HOST,
user: POSTGRES_USER,
password: POSTGRES_PASSWORD,
database: POSTGRES_DB
}
} else if (ENV === 'test') {
database = {
host: POSTGRES_HOST,
database: POSTGRES_TEST_DB,
user: POSTGRES_USER,
password: POSTGRES_PASSWORD
}
}
const client = new Pool(database)
export default client
这是我的database.json文件
{
"dev": {
"driver": "pg",
"host": { "ENV": "POSTGRES_HOST" },
"database": { "ENV": "POSTGRES_DB" },
"user": { "ENV": "POSTGRES_USER" },
"password": { "ENV": "POSTGRES_PASSWORD" }
},
"test": {
"driver": "pg",
"host": { "ENV": "POSTGRES_HOST" },
"database": { "ENV": "POSTGRES_TEST_DB" },
"user": { "ENV": "POSTGRES_USER" },
"password": { "ENV": "POSTGRES_PASSWORD" }
}
}
我的.env文件
PORT=3000
POSTGRES_HOST=127.0.0.1
POSTGRES_DB=store
POSTGRES_TEST_DB=test
POSTGRES_TEST_PASSWORD=19992001
POSTGRES_USER=postgres
POSTGRES_PASSWORD=19992001
SALT_ROUNDS=10
BCRYPT_PASSWORD=123456
TOKEN_SECRET=50
ENV=dev
那是我的测试文件
import { User, userStore } from '../models/user'
import bcrypt from 'bcrypt'
import dotenv from 'dotenv'
dotenv.config()
const store = new userStore()
const pepper = process.env.BCRYPT_PASSWORD
const user: User = { username: 'test', password: 'test123' }
const pass = bcrypt.hashSync('test_password' + pepper, 10)
describe('User Model', () => {
it('should have an index method', () => {
expect(store.index).toBeDefined()
})
it('should have a show method', () => {
expect(store.show).toBeDefined()
})
it('should have a create method', () => {
expect(store.create).toBeDefined()
})
it('create method should add a user', async () => {
const result = await store.create(user)
if (result) {
expect(result.username).toBe('test')
}
})
})
前3个测试运行良好,但由于某种原因,最后一个测试不是
这是我正在使用的package.json中的脚本
"test": "set ENV=test db-migrate --env test up && jasmine && db-migrate --env test down"
通过尝试类似的东西来确保它是一个字符串
const POSTGRES_PASSWORD = process.env.POSTGRES_PASSWORD + ""
或者在您的env类型中
POSTGRES_PASSWORD="19992001"