而不是结果"/>
Supertest中的MySQL查询返回{sql,bindings}而不是结果
我正在对查询mysql数据库的路由运行supertest +开玩笑,在本地运行。通过失眠进行测试会返回正确的信息,但是使用supertest时,我的所有数据库查询都不会返回正确的值。
// test.js
import request from 'supertest';
import db from '../database';
import app from './app';
describe('/', () => {
test('should return db results', async () => {
const mock = jest.spyOn(db, 'query');
const response = await request(app).get(`/`)
console.log(response.error);
expect(dbMock).toBeCalled();
expect(response.status).toBe(200);
});
});
// route (excerpt from app.js)
import returnUserInfo from './returnUserInfo';
app.get(
'/',
returnUserInfo
);
// returnUserInfo.js
import db from '../database';
export default async function returnUserInfo(req, res, next) {
const sql = 'select `userInfo` from `users` where `email` = ?';
const bindings = ['test'];
try {
const data = await db.query(sql, bindings);
if (data.length !== 1) {
throw new Error(`Invalid ${Object.keys(data)}`);
}
return res.json(data[0]);
} catch (err) {
return next(err);
}
}
// database.js
import { PoolConnection } from 'mysql';
const db = new PoolConnection(
{
host: 'localhost',
user: 'root',
password: 'foobar',
database: 'db',
connectionLimit: 100,
},
false,
);
export default db;
如前所述,对邮递员/失眠症进行测试会返回正确的结果...使用supertest测试并记录错误时:
Error: Invalid sql,bindings
回答如下:[似乎有一个用于mysql db的node_module手动模拟,它覆盖了对数据库的所有调用并只是返回了]]
{ sql, bindings }
自我说明:当事情没有意义...请检查它们是否应该具有意义。
更多推荐
Supertest中的MySQL查询返回{sql,bindings}而不是结果
发布评论