我在mocha中编写测试,我有一个变量,其中包含一个带%s
的字符串
let api = '/api/Boxer/%s/Role';
我有一个名为id
的变量,其中包含上面显示的%s
值。
let id = newUser.id;
一般情况下,我将此api传递给mocha的post
函数,以便点击帖子请求,类似这样,
request(app)
.post(api)
.send(data)
我的问题是:
我想将变量api
和id
传递给post函数,以便最终将其解析为单个字符串。
请帮助我实现这个目标,或者如果我错了,那么形成一个可以传递给post
函数的单个字符串的正确方法应该是什么。
答案 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);
}