在mocha post函数上为%s赋值

时间:2018-05-29 11:02:54

标签: javascript automation mocha

我在mocha中编写测试,我有一个变量,其中包含一个带%s的字符串

let api = '/api/Boxer/%s/Role'; 

我有一个名为id的变量,其中包含上面显示的%s值。

let id = newUser.id;

一般情况下,我将此api传递给mocha的post函数,以便点击帖子请求,类似这样,

request(app)
.post(api)
.send(data)

我的问题是: 我想将变量apiid传递给post函数,以便最终将其解析为单个字符串。

请帮助我实现这个目标,或者如果我错了,那么形成一个可以传递给post函数的单个字符串的正确方法应该是什么。

1 个答案:

答案 0 :(得分:1)

下面的函数检查所有%s占位符,并用它们各自的值替换它们。

function replacePlaceHolders(str, placeholder, new_values) {

  var new_str = "";
  var pl_len = placeholder.length;
  var ptr = 0;
  for (var i = 0; i <= str.length - pl_len; ++i) {
    for (var j = 0; j < pl_len; ++j) {
      if (str[i + j] != placeholder[j]) {
        new_str += str[i];
        break;
      } else if (j == pl_len - 1) {
        if (ptr === new_values.length) throw "Insufficient placeholder values given for " + str;
        new_str += new_values[ptr++];
        i = i + pl_len - 1;
      }
    }
  }

  return new_str;
}

try {
  console.log(replacePlaceHolders('/api/Boxer/%s/Role', '%s', ['87']));
  console.log(replacePlaceHolders('/api/Boxer/%s%s/Role', '%s', ['87', 94]));
  console.log(replacePlaceHolders('%s/api/Boxer/%s/%s/Role/%s', '%s', ['some_text', '87', 94, 'javascript']));
  console.log(replacePlaceHolders('%s%s%s%s', '%s', ['some_text', '87', 94, 'javascript']));
  console.log(replacePlaceHolders('%s%s%s%s', '%s', ['some_text', '87', 94]));

} catch (err) {
  console.log(err);
}