#javascript #node.js #unit-testing #mocha.js #sinon
Вопрос:
Как заглушить _http_outgoing.js
? https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js
У меня есть var anOutgoingMessage = <OutgoingMessage>{};
то, что я передаю в свой вызов API Get(anIncomingMessage,anOutcomingMessage)
, в котором Get
есть anOutcomingMessage.end(data)
.
В моем тесте я хочу подтвердить end
, что вызывается с ожидаемыми данными.
Я пробовал и то, и другое
const outgoingMessageSpy = sinon.stub(OutgoingMessage.prototype,"end");
и
const outgoingMessageSpy = sinon.stub(anOutgoingMessage,"end");
потом я
expect(outgoingMessageSpy.called).to.be.true()
Ибо 1) outgoingMessageSpy.called
просто ложно. Для 2) Я получаю Cannot stub non-existent property end
end
определяется в _http_outgoing.js OutgoingMessage.prototype.end = function end(chunk, encoding, callback) {
как по ссылке выше.
Каков был бы правильный способ заглушить это сообщение и подтвердить, что end вызывается с параметром, который я ожидаю?
Спасибо!
Ответ №1:
var anOutgoingMessage = <OutgoingMessage>{};
вот в чем была проблема! так и должно быть var anOutgoingMessage = new OutgoingMessage();
. Конечно end
, иного выхода нет {}
. Это сводило меня с ума