Колется синоном, но заглушка не называется

#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 , что вызывается с ожидаемыми данными.

Я пробовал и то, и другое

  1. const outgoingMessageSpy = sinon.stub(OutgoingMessage.prototype,"end");

и

  1. 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 , иного выхода нет {} . Это сводило меня с ума