Я использую testdouble.js для проверки функций пары. Для функции ниже я изо всех сил пытаюсь понять, как лучше всего заглушить вызов API-интерфейса, чтобы покрыть оставшуюся часть функции. Похоже, это должно быть просто, но я думаю, что слишком долго смотрел на него.Использование Testdouble.js для заглушения API вызова и разрешения обещания
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);
})
});
};
Мой тест выглядит как ниже:
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()));
});
И ошибки я получаю:
AssertionError: expected [Promise] to be [Promise]
+ expected - actual
{
- "_bitField": 0
+ "_bitField": 33554432
"_fulfillmentHandler0": [undefined]
"_promise0": [undefined]
"_receiver0": [undefined]
- "_rejectionHandler0": [undefined]
+ "_rejectionHandler0": "PASSED"
}