节点:等待Post请求完成并处理回调的正确方法

时间:2016-02-22 15:20:53

标签: node.js http callback request cucumberjs

所以我一直在尝试实现一个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. 如果请求失败,则错误不会传回回调并且不会将其标记为失败。
  3. 任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我感觉你的测试在触发POST调用之前就失败了。如果以下行失败,我不知道黄瓜是否会默默地失败并进入下一步。

body: fs.readJsonSync(fileName) 

你打印错误了吗?是什么版本的cucumberjs?这些答案可以帮助您更好地指导