Узел: правильный способ ожидания завершения запроса Post и обработки обратного вызова

Итак, я пытался реализовать шаг Cucumber, который отправляет запрос POST на веб-сайт, ждет завершения запроса (поскольку следующие шаги зависят от успешной публикации) и ломает тест, если что-то пошло не так:

this.Then(/^Post file "([^"]*)" and wait for the request to finish$/, function(fileName, callback) {

  var request = require("request");
  var fs = require("fs-extra");

  var options = {
    method: 'POST',
    url: "https://www.testOver9000.com/",
    body: fs.readJsonSync(fileName),
    json: true,
    auth: {
      username: "test",
      password: "test"
    }
  };

  request(options, function(error, response, body) {

    if (!error && response.statusCode == 200) {
      callback(null);
    } else {
      callback(error);
    }
  });
});

На данный момент у меня есть две проблемы:

  1. Этот шаг не ждет завершения HTTP POST, прежде чем перейти к следующему шагу.
  2. Если запрос завершается неудачно, ошибка не передается обратно в обратный вызов и не помечается как неудачная.

Любая помощь будет оценена по достоинству.


person Mantas    schedule 22.02.2016    source источник
comment
какая версия огурца? Вы печатаете error   -  person nilesh    schedule 25.02.2016


Ответы (1)


У меня такое ощущение, что ваш тест терпит неудачу еще до того, как сработает вызов POST. Если в приведенной ниже строке происходит сбой, я не знаю, происходит ли без ошибок огурец и переходит ли он к следующему шагу.

body: fs.readJsonSync(fileName) 

Вы печатаете ошибку? какая версия огурца? Эти ответы могут помочь вам лучше ориентироваться

person nilesh    schedule 24.02.2016