首页 > 解决方案 > 在 mocha post 函数上为 %s 赋值

问题描述

我正在用 mocha 编写测试,我有一个变量,里面有一个%s字符串

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

我有一个名为的变量id,它保存%s上面显示的值。

let id = newUser.id;

通常,我将这个 api 传递给postmocha 的函数,以便发送一个帖子请求,像这样,

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

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

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

标签: javascriptautomationmocha.js

解决方案


下面的这个函数检查所有%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);
}


推荐阅读