class ThingWithRedis
  constructor: (@config) ->
    @redis = require('redis').createClient()

  push: (key, object) ->
    @redis.set(key, object)
  fetch: (key, amount) ->
    @redis.get key, (err, replies) ->
      console.log "|#{replies}|"

module.exports = ThingWithRedis

#if you uncomment these lines and run this file, redis works

#twr = new ThingWithRedis('some config value')
#twr.push('key1', 'hello2')
#twr.fetch('key1', 1)
#twr.redis.quit()

但从测试来看:
ThingWithRedis = require '../thing_with_redis'

assert = require('assert')

describe 'ThingWithRedis', ->
  it 'should return the state pushed on', ->

    twr = new ThingWithRedis('config')
    twr.push('key1', 'hello1')
    twr.fetch('key1', 1)

    assert.equal(1, 1)

你永远看不到“hello1”被打印出来。
但是,当我运行咖啡的东西和咖啡直接与底线联合国评论你确实看到'地狱2'印刷。
当我跑的时候:
摩卡咖啡:咖啡脚本
Redis好像停止工作了。有什么想法吗?

最佳答案

可能redis连接尚未建立。尝试在运行测试之前等待“就绪”事件。

describe 'ThingWithRedis', ->
  it 'should return the state pushed on', ->

    twr = new ThingWithRedis('config')
    twr.redis.on 'ready', ->
      twr.push('key1', 'hello1')
      twr.fetch('key1', 1)

需要注意的是,node_redis将在“ready”事件之前调用的命令添加到队列中,然后在建立连接时处理这些命令。摩卡有可能在redis“准备好”之前就已经退出了。
https://github.com/mranney/node_redis#ready

关于node.js - 为什么redis命令不会在我的mocha测试中用于咖啡脚本文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12977935/

10-11 12:48