集成测试期间未将数据添加到 Redis
Data not being added to Redis during integration test
我正在尝试使用 Redis 存储为我的 expressjs 路由器编写集成测试。
const request = require('supertest');
const redisClient = require('../../startup/redis-client');
describe('/api/', () => {
beforeEach(() => {
server = require('../../index');
});
afterEach(async () => {
await redisClient.flushAll();
await redisClient.disconnect();
server.close();
});
describe('GET /:key', () => {
it('should return the key', async () => {
console.log(redisClient);
await redisClient.set('key1', 'value1');
await redisClient.set('key2', 'value2');
const res = await request(server).get('/api/key1');
expect(res.status).toBe(200);
expect(res.body).toBe('value1');
});
});
});
结果数据如下所示:
[
{
id: '1647263665426-0',
message: [Object: null prototype] { key1: 'value1' }
}
]
我的路由处理程序代码:
const result = await redisClient.get(key);
console.log(result);
if(result && result[0] && result[0].message)
{
res.send(result[0].message[`${key}`]);
} else {
res.status(404).send("Key not found.");
}
是否有 result[0].message['${key}'])
或 result[0].message.key
不起作用的原因?从 Redis 返回的对象中获取 'value1' 的正确方法是什么?
将 node-redis 的响应转换为有效对象允许我 return 我期望的值。
const resultObject = JSON.parse(JSON.stringify(result[0].message));
res.send(resultObject[key]);
我正在尝试使用 Redis 存储为我的 expressjs 路由器编写集成测试。
const request = require('supertest');
const redisClient = require('../../startup/redis-client');
describe('/api/', () => {
beforeEach(() => {
server = require('../../index');
});
afterEach(async () => {
await redisClient.flushAll();
await redisClient.disconnect();
server.close();
});
describe('GET /:key', () => {
it('should return the key', async () => {
console.log(redisClient);
await redisClient.set('key1', 'value1');
await redisClient.set('key2', 'value2');
const res = await request(server).get('/api/key1');
expect(res.status).toBe(200);
expect(res.body).toBe('value1');
});
});
});
结果数据如下所示:
[
{
id: '1647263665426-0',
message: [Object: null prototype] { key1: 'value1' }
}
]
我的路由处理程序代码:
const result = await redisClient.get(key);
console.log(result);
if(result && result[0] && result[0].message)
{
res.send(result[0].message[`${key}`]);
} else {
res.status(404).send("Key not found.");
}
是否有 result[0].message['${key}'])
或 result[0].message.key
不起作用的原因?从 Redis 返回的对象中获取 'value1' 的正确方法是什么?
将 node-redis 的响应转换为有效对象允许我 return 我期望的值。
const resultObject = JSON.parse(JSON.stringify(result[0].message));
res.send(resultObject[key]);