使用Meteor的速度框架登出测试信息的正确方法是什么?
我有一些mocha测试,我想从中输出一些值,我想如果输出最终会在速度窗口的日志部分结束,那就好了...但似乎没有是任何文件吗?
答案 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。