集成测试期间未将数据添加到 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]);