J'utilise un service de repos tiers pour l'envoi de code de vérification SMS. J'ai écrit un test unitaire pour cela. Cependant, je ne veux pas être envoyé un message chaque fois que je lance l'unité-test.bibliothèque de requêtes stub en javascript
Le code est comme:
const _request = require("request");
_request({
method: "POST",
url: "http://blah.com/json",
form: {
apikey: "blah",
mobile: input.mobilePhoneNumber,
text: `code is: ${verificationCode}`,
}
}, (err, res, body) => {
if (err) {
dbg(`end, output=${err}`)
return reject(new Error("something wrong"))
} else {
dbg(`end, output=${res}`)
return resolve({})
}
})
Et dans le test Im en utilisant sinon.stub
sinon.stub(request, "post").returns(Promise.resolve({}))
Toutefois, ce ne marche pas vraiment talon attraper la méthode "post" à la demande. J'ai regardé dans le code source et j'ai essayé de nombreuses façons (comme remplacer le constructeur à la place), mais aucun ne fonctionne. Vous vous demandez si quelqu'un a déjà essayé cela auparavant? Comment dois-je talonner cette méthode de publication sur demande?
Merci!
Qu'est-ce que 'request' dans votre test unitaire? – robertklep
c'est cette lib: https://github.com/request @robertklep –
Raison que je demandais parce que votre code n'appelle pas 'request.post()' (il appelle 'request') et la bibliothèque' request' lui-même ne supporte pas les promesses (le retour d'une promesse d'un talon n'a donc pas de sens). – robertklep