验证正在使用预期消息调用 hapi server.log
Verify hapi server.log is being called with expected message
我需要验证某些操作是否正在记录到服务器,并且想知道为什么我在对 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,called 为假,并且 callCount是 0,尽管 server.log 在我的端点被调用。
我在这里错过了什么?调用 server.inject 是否会导致 hapi 服务器上的存根方法出现问题?
我能找到的最佳解决方案是在 hapi 服务器上使用 server.once 方法。
我在问题中没有提到我使用的是 hapi 版本 16.6.2,所以这个解决方案可能不适用于最新版本的 hapi,因为它有很大的不同。
server.once({
name: 'log',
filter: 'myTag',
}, (update) => {
Code.expect(update.data).to.equal('expectedMessage');
});
使用这种方法,我可以为我的日志事件指定事件 'log' 和特定标签(或多个标签)。希望这对其他人有帮助!
我需要验证某些操作是否正在记录到服务器,并且想知道为什么我在对 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,called 为假,并且 callCount是 0,尽管 server.log 在我的端点被调用。
我在这里错过了什么?调用 server.inject 是否会导致 hapi 服务器上的存根方法出现问题?
我能找到的最佳解决方案是在 hapi 服务器上使用 server.once 方法。
我在问题中没有提到我使用的是 hapi 版本 16.6.2,所以这个解决方案可能不适用于最新版本的 hapi,因为它有很大的不同。
server.once({
name: 'log',
filter: 'myTag',
}, (update) => {
Code.expect(update.data).to.equal('expectedMessage');
});
使用这种方法,我可以为我的日志事件指定事件 'log' 和特定标签(或多个标签)。希望这对其他人有帮助!