J'utilise testdouble.js pour tester quelques fonctions. Pour la fonction ci-dessous, j'ai du mal à trouver la meilleure façon de boucler l'appel API get afin de couvrir le reste de la fonction. Il semble que cela devrait être simple, mais je pense que je l'ai regardé trop longtemps.Utiliser Testdouble.js pour interrompre l'appel API et résoudre une promesse
var checkTags = function(tags) {
return new Promise(function(resolve) {
/* istanbul ignore if */
if (process.env.NODE_ENV !== 'test') {
console.log("Entered Check Tags");
}
var tagMSG;
var url = 'https://api.to.call/';
tags.Tags.forEach(function(uaiTag) {
tagMSG = uaiTag.Key === 'UAI' ? uaiTag.Value : 'No Tag';
});
console.log(tagMSG);
if (tagMSG === "No Tag") return resolve('FAILED');
request.get(url + tagMSG, function(error, response) {
var returnStatus = 'FAILED';
console.log(returnStatus);
if (!error && response.statusCode === 200) {
returnStatus = 'PASSED';
}
return resolve(returnStatus);
})
});
};
Mon test ressemble au-dessous:
it('should resolve2', function(done) {
td.replace(request, 'get', function() {
return new Promise((resolve) => resolve('PASSED'));
});
var policy = require('../main/js-utils');
should(policy.checkTags(require('./data/tags.json'))).be.equal(new Promise((resolve) => resolve()));
});
Et l'erreur que je reçois:
AssertionError: expected [Promise] to be [Promise]
+ expected - actual
{
- "_bitField": 0
+ "_bitField": 33554432
"_fulfillmentHandler0": [undefined]
"_promise0": [undefined]
"_receiver0": [undefined]
- "_rejectionHandler0": [undefined]
+ "_rejectionHandler0": "PASSED"
}