node.js - 验证 hapi server.log 正在使用预期消息进行调用

标签 node.js sinon hapi.js

我需要验证某些操作是否已记录到服务器,并且想知道为什么我无法阻止对 hapi server.log() 的调用。

在我的单元测试中,我使用以下方法实例化 hapi 服务器:

const Hapi = require('hapi');
const server = new Hapi.Server();

我的 stub 设置为:

const Sinon = require('sinon');
const logStub = Sinon.stub(server, 'log');

我正在使用 server.inject 来调用我希望调用 server.log 的端点。当我调试测试时,我设置了一个断点来验证是否在端点中调用了 server.log,并且在单元测试中设置了一个断点来验证是否正在调用 logStub。但是,当我这样称呼时:

server.inject(localRequest).then(() => {
  const spyCall = logStub.getCall(0);
})

spyCall 为空,如果我检查 logStub, 为 false,callCount 为 0,尽管在我的服务器中调用了 server.log端点。

我在这里缺少什么?调用 server.inject 是否会导致 hapi 服务器上的 stub 方法出现问题?

最佳答案

我能找到的最佳解决方案是使用 server.once hapi 服务器上的方法。

我在问题中忘记提及我正在使用 hapi 版本 16.6.2,因此此解决方案可能不适用于最新版本的 hapi,因为它有很大不同。

server.once({
  name: 'log',
  filter: 'myTag',
  }, (update) => {
    Code.expect(update.data).to.equal('expectedMessage');
    });

使用这种方法可以让我指定事件“日志”以及日志事件的特定标签(或多个标签)。希望这对其他人有帮助!

关于node.js - 验证 hapi server.log 正在使用预期消息进行调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714486/

相关文章:

javascript - 使用 sinon spies 验证函数调用并检查参数

node.js - 如何测试 API 端点是否存在可由多个代码路径触发的错误路径?

javascript - 如何在Sinon JS中延迟假后端的特定响应

node.js - Loopback.io 的 ACL 问题

node.js - AWS - SNS - 如何在每次调用的基础上设置发送者?

node.js - Hapi.js - 无法在 SPA 中提供静态文件

node.js - 与服务器建立多个连接有什么意义?

javascript - 在 Hapi.js Restful API 中了解请求 IP

javascript - 如何将backbone.js 与websockets/socket-io/nowjs 一起使用

javascript - 获取 Discord.JS 机器人的正常运行时间