【发布时间】:2019-08-17 05:57:25
【问题描述】:
在 Postman 中,我试图实现以下目标:
- 在集合中:
- 创建一个包含可重用函数的实用程序对象
- 将该实用程序对象存储在全局变量中,以供以后在请求测试脚本中使用。
- 在请求中:
- 从全局变量中提取实用程序对象代码。
- 评估代码并将生成的实用程序对象实例存储在局部变量中。
- 在实用程序对象实例上调用方法。
不过,我在网络上看到的许多实现似乎都不起作用。我可以一直降到第 2.2 步,然后事情就会死于可怕的火焰般的死亡。 Postman 下的 JavaScript 引擎拒绝评估存储在 globals 集合中的对象。
为了隔离问题,我已将其简化为最低限度的脚本,该脚本放置在我的收藏的预请求脚本中:
postman.setGlobalVariable("loadUtils", function utils() {
let utils = {};
utils.main = function() {
console.log("Hello, world!");
}
return utils;
} + ';utils()');
然后我尝试按如下方式加载此脚本:
var code = globals.loadUtils;
console.log(code);
var utils = eval('(' + code + ')');
但总是出现以下错误:
评估测试脚本时出错:SyntaxError: 意外的令牌;
我试过了:
- 将整个函数转换为多行字符串并将结果存储在全局环境中。发生了同样的错误。
- 在函数体中直接包含括号。那也没用。
- 使用 lambda 表达式,但这会导致编辑器本身出现各种问题。
我确信这是简单、愚蠢和显而易见的事情,而我只是没有看到它。
有人可以指出我在这里做错了什么吗?
附:正如here on StackOverflow 和Postman forums on GitHub 所建议的那样,这应该是可能的(尽管它需要滚动浏览cmets 才能看到解决方案)。
【问题讨论】:
-
如果将
;utils()更改为()会发生什么? -
@JonasWilms 相同的响应。我将身体内脏,使其包含
let utils = {}; return utils;,但仍然出现Unexpected token ;错误。
标签: javascript postman