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



所以我一直在尝试实现一个黄瓜步骤,该步骤对网站执行 POST 请求,等待请求完成(因为以下步骤依赖于 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. 如果请求失败,则错误不会传递回调,也不会将其标记为失败。

任何帮助将不胜感激。

我有一种感觉,甚至在触发开机自检呼叫之前,您的测试就失败了。如果下面一行失败了,我不知道黄瓜是不是默默地失败了,进入下一步。

body: fs.readJsonSync(fileName) 

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

最新更新