LabとSinonを使って、私のファイルで呼び出されるさまざまなHTTPリクエストに対していくつかのテストを書こうとしています。私はhttp://sinonjs.org/の偽のXMLHttpRequestの例に従っていますが、私がテストを実行すると、実際にはリクエストを捕捉していないようです。ここでSinon Fake XMLがリクエストをキャプチャしていない
(関連)テストコードです:
internals.create = async function (request, reply) {
const engineeringTicket = request.payload.type === 'engineering';
const urgentTicket = request.payload.urgency === 'urgent';
if (validation.isValid(request.payload)) {
const attachmentPaths = formatUploads(request.payload.attachments);
const ticketData = await getTicket(request.payload, attachmentPaths);
if (engineeringTicket) {
const issueData = getIssue(request.payload);
const response = await jira.createIssue(issueData);
jira.addAttachment(response.id, attachmentPaths);
if (urgentTicket) {
const message = slack.getMessage(response);
slack.postToSlack(message);
}
}
zendesk.submitTicket(ticketData, function (error, statusCode, result) {
if (!error) {
reply(result).code(statusCode);
} else {
console.log(error);
}
});
} else {
reply({ errors: validation.errors }).code(400); // wrap in Boom
}
};
をあなたはそれがjira.createIssueを呼び出して見ることができるよう:
context('when provided a valid payload', function() {
let xhr;
let requests;
before(function (done) {
xhr = sinon.useFakeXMLHttpRequest();
requests = [];
xhr.onCreate = function (req) { requests.push(req); };
done();
});
after(function (done) {
// clean up globals
xhr.restore();
done();
});
it('responds with the ticket id', (done) => {
create(internals.validOptions, sinon.spy());
console.log(requests); // Logs empty array []
done();
});
});
は、私はここに、他のファイルからインポート機能で作成しますzendesk.submitTicket(いずれもHTTPリクエストを使用してペイロードをAPIに送信します)。しかし、テストを実行した後、要求変数はまだ空であり、要求を取得していないようです。チケット/問題が作成されていないため、実際にリクエストを送信していません。実際にリクエストを取得するには、何を修正する必要がありますか?
うわー、助けてくれてありがとう!私は、HTTPコールをスタブするためにNockを調べるでしょう、それはまさに私が必要とするもののようです。 Btw、 "この回答"のリンクが機能していないので編集しました – AJwr