运行我的测试时,出现以下错误:`“after each”hook for“creates a new artist in the database”Error:SASL:SCRAM-SERVER-FIRST-MESSAGE:客户端密码必须为字符串
错误指向如下:
// helper.js
const db = require("../src/db");
afterEach(async () => {
await db.query("TRUNCATE Artists CASCADE");
});
字符串
- 'db'文件如下:*
`// db/index.js
const { Pool } = require("pg");
const pool = new Pool();
module.exports = {
query: (text, params) => pool.query(text, params),
};`
型
测试文件如下:
// artist-create.test.js
const { expect } = require("chai");
const request = require("supertest");
const app = require("../src/app");
const db = require("../src/db");
describe("create artist", () => {
describe("/artists", () => {
describe("POST", () => {
it("creates a new artist in the database", async () => {
const { status, body } = await request(app).post("/artists").send({
name: "Tame Impala",
genre: "Rock",
});
expect(status).to.equal(201);
expect(body.name).to.equal("Tame Impala");
expect(body.genre).to.equal("Rock");
const {
rows: [artistData],
} = await db.query(`SELECT * FROM Artists WHERE id = ${body.id}`);
expect(artistData.name).to.equal("Tame Impala");
expect(artistData.genre).to.equal("Rock");
});
});
});
});
型
.env和.env.test文件如下:
// .env
PGUSER=postgres
PGHOST=localhost
PGPASSWORD=password
PGDATABASE=music_library_dev
PGPORT=5432
PORT=3000
// .env.test
PGUSER=postgres
PGHOST=localhost
PGPASSWORD=password
PGDATABASE=music_library_api_test
PGPORT=5432
PORT=3000
型
这是我第一次使用stackoverflow寻求帮助,所以如果需要任何进一步的细节,请让我知道!我很乐意提供更多的信息,如果需要的话,我不想完全填补页面粘贴所有的代码,我写的,如果没有必要。
我试图更改密码以绕过这个问题,但这不起作用。
1条答案
按热度按时间lymnna711#
要修复此错误,请按如下所示更新db/index.js文件:
字符串
此修改通过在运行测试时从. env.test加载适当的环境变量来修复密码问题。确保使用npm install dotenv安装了dotenv库。