如何使用Mocha / Velocity(流星测试)正确记录?

时间:2015-01-05 13:13:46

标签: testing logging meteor velocity

使用Meteor的速度框架登出测试信息的正确方法是什么?

我有一些mocha测试,我想从中输出一些值,我想如果输出最终会在速度窗口的日志部分结束,那就好了...但似乎没有是任何文件吗?

2 个答案:

答案 0 :(得分:1)

我还没有看到它记录下来。

我不知道如何将消息记录到Velocity窗口,虽然我不喜欢登录UI的想法。

我所做的是创建了一个简单的Logger对象,它包含了我的所有控制台。{{method}}调用并阻止了process.env.IS_MIRROR的日志记录。这只会在终端上输出测试框架消息。如果我需要调试特定测试,我会在Logger上激活日志输出一段时间。

答案 1 :(得分:0)

这是一个可怕的黑客攻击。它将公开一种不受保护的写入数据库的方法。

但它有效。

我对于缺少此功能感到非常恼火,所以我深入了解Velocity code,发现他们有一个全球可访问的VelocityLogs集合。但是你需要从生产中访问它,而不是测试实例,以便在网络记者中看到它。

因此,我花了很长时间才启用Meteor CORS,但我终于管理 - 甚至为Firefox - 在IronRouter中创建一条新路由,以便将POST日志消息发送到。 (CORS可能会更好this suggestion - 但你真的不应该暴露这个。)

您需要meteor add http

放在

之外
if Meteor.isServer
  Router.route 'log', ->
    if @request.method is 'OPTIONS'
      @response.setHeader 'Access-Control-Allow-Origin', '*'
      @response.setHeader 'Access-Control-Allow-Methods', 'POST, OPTIONS'
      @response.setHeader 'Access-Control-Max-Age', 1000
      @response.setHeader 'Access-Control-Allow-Headers', 'origin, x-csrftoken, content-type, accept'
      @response.end()

      return

    if @request.method is 'POST'
      logEntry = @request.body

      logEntry.level ?= 'unspecified'
      logEntry.framework ?= 'log hack'
      logEntry.timestamp ?= moment().format("HH:mm:ss.SSS")

      _id = VelocityLogs.insert(logEntry)

      @response.setHeader 'Access-Control-Allow-Origin', '*'
      @response.end(_id)

      return

  , where: 'server'

tests/mocha/lib或类似内容中,作为效用函数:

@log = (message, framework, level) ->
  HTTP.post "http://localhost:3000/log",
    data: { message: message, framework: framework, level: level}
    (error) -> console.dir error

对于咖啡爱好者:coffeescript.org>立即尝试>粘贴代码以转换>获取优质的旧JavaScript。