验证正在使用预期消息

时间:2018-02-09 21:39:36

标签: node.js sinon hapijs

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

在我的单元测试中,我使用:

实例化一个hapi服务器
const Hapi = require('hapi');
const server = new Hapi.Server();

我将我的存根设置为:

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,名为为假, callCount 为0,尽管在我的网站中调用了server.log端点。

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

1 个答案:

答案 0 :(得分:2)

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

我在我的问题中忽略了我使用hapi版本16.6.2所以这个解决方案可能不适用于最新版本的hapi,因为它有很大的不同。

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

使用这种方法,我可以指定事件' log'和我的日志事件的特定标记(或标记)。希望这有助于其他人!