Показать сообщение отдельно
  #818 (permalink)  
Старый 04.02.2015, 21:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

у меня есть функция:
/** Скачает изображение по ссылке, сохранит в папку */
exports.downloadImage = function (imageURL) {
  return new Promise(function (res, rej) {

    var ext = path.extname(imageURL);
    var imageName = utils.getImageName(imageURL);
    var dest = path.join(imageSavePath, imageName);

    var file = fs.createWriteStream(dest);

    /** @type {Object} RESOLVE ARGUMENT */
    var info = {imageURL: imageURL, dest: dest, ext: ext, imageName: imageName};

    var request = http.get(imageURL, function (response) {
        response.pipe(file);
        file.on('finish', function () {
            file.close(function () {
              res(info);
            });
        });
        file.on('error', function (err) {
            fs.unlinkSync(dest);
            rej(err);
        });
    });

  });
};

которая качает картинку из инета и сохраняет её на диск.

я написал такой тест к ней:
describe('downloadImage', function () {
    it('should download image by url', function () {
      return utils.
        downloadImage('http://i.imgur.com/emZNv0N.jpg').
        then(function (info) {
          fs.unlinkSync(info.dest);
          return Promise.resolve(info);
        }).
        should.eventually.
        include({imageURL: 'http://i.imgur.com/emZNv0N.jpg', ext: '.jpg'}).
        and.property('imageName').match(/^product-image-/);
    });
  });


всё хорошо, но тест выполняется 600 мс

вопрос - как подменить модуль http или вообще её переписать, чтобы можно было не скачивать изображение при тестировании?
Ответить с цитированием