我需要验证某些操作是否已记录到服务器,并且想知道为什么我无法将调用存根到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服务器上的存根方法出现问题吗?
答案 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'和我的日志事件的特定标记(或标记)。希望这有助于其他人!