没有要求处理程序我有一个茉莉花测试规范test_spec.js这样的:调用server.inject()POST请求Hapi.js
describe('my tests',() => {
it('POST should return 201 created',() => {
var req = {
method: 'POST',
url: '/api/v1.0/message',
payload: JSON.stringify({name: 'Ethan'})
};
server.inject(req, res => {
expect(res.statusCode).to.equal(201);
});
});
});
API调用的路线是这样的:
var routes = [{
path: '/api/v1.0/message',
method: 'POST',
handler: function(request, reply) {
reply('Success').created();
}
}];
exports.register = function(server, options, next) {
server.route(routes);
next();
}
但是,当我运行测试时,此特定测试的expect()
函数不会被调用,因为server.inject()
方法不会调用响应回调。事实上,甚至没有路由处理器方法被调用(我用console.log语句进行检查)。但是,当我更改请求方法以及从POST到GET的路由时,它会起作用,并且测试按预期调用expect()
方法。该测试仅适用于POST请求。我做错了吗?
您可以制作一个完整的可运行示例(如果它很大,则从您的应用程序中提取),而不是片段? –
我组合了路由定义和路由处理程序来简化代码。如果我也要在这里粘贴Hapi样板代码,它会让它笨拙。要复制这个,基本上只需要一个Hapi样板并插入上面的路线+处理程序。然后写上述Jasmine测试并通过终端中的'jasmine'命令执行。 – pkout
我不同意。如果您提供了我们可以运行的最小工作示例,则可以更轻松地提供帮助。因为它看起来不错,所以我无法对上述做很多。您的问题可能存在于您提供的内容之外。 –