沒有要求處理程序我有一個茉莉花測試規範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
我不同意。如果您提供了我們可以運行的最小工作示例,則可以更輕鬆地提供幫助。因爲它看起來不錯,所以我無法對上述做很多。您的問題可能存在於您提供的內容之外。 –