测试hset和hget时使用ioredis或node_redis的奇怪行为

时间:2016-09-03 12:32:35

标签: node.js redis mocha node-redis ioredis

希望有人可以对此有所了解。我不能为我的生活找到问题所在。

问题:

我正在尝试使用 hset 在一个文件中为Redis添加一个值,并使用 hget 在另一个文件中获取该值。在测试用例中最终发生的是该值已设置但 hget 返回null,就好像没有任何东西一样。

尝试:

当我在相同的文件中设置值后立即尝试获取值时,会发生非常奇怪的部分。它实际上正常工作!看看这个......

// FYI: This is co-mocha so the generator function is okay
describe('Route', () => {
  it('should return the value currently set in Redis', function* () {
    const link = 'this-is-a-link';
    yield redis.hset('i:metadata', 'stream', link); // using ioredis
    const response = yield request.send(); // requests to my Koa server
    expect(response.body.stream).to.equal(link); // expected null to equal 'this-is-a-link'
  });
});

你可以看到路线很简单......

// FYI: This is a Koa route reference with a HTTP GET on '/'
exports.get = function* () {
  const stream = yield redis.hget('i:metadata', 'stream'); // using ioredis
  this.body = { stream }; // holds a value of null
};

如果我在我的测试用例中的 hset 下面插入 hget ,则可以完美地检索到该值。有没有人对如何解决这个问题有任何想法?

注意:

在有人建议之前,我已经听过连接事件了,这不重要,因为我可以 hget hset 下方的值 。使用promisified node_redis 安装时,此问题也会持续存在。

谢谢!

0 个答案:

没有答案