Javascript 邮递员:更改局部变量的值会影响环境变量的值

Javascript 邮递员:更改局部变量的值会影响环境变量的值,javascript,postman,Javascript,Postman,我想知道我是不是在《邮差》中遇到了一个bug,或者这是故意的 我有一个案例,其中我有两个请求: 在请求1中,我捕获了完整的响应库 在请求2(put)中,我需要为请求2提供捕获的请求1的responsebody,作为requestbody,但某些布尔值的变化最小 在其他请求(put)中,我执行与请求2中相同的操作。因此,再次从请求1的捕获的响应主体开始 因此,我采用了以下方法: 请求1-测试脚本: pm.environment.set("Filter-get_responsebody", pm.r

我想知道我是不是在《邮差》中遇到了一个bug,或者这是故意的

我有一个案例,其中我有两个请求:

在请求1中,我捕获了完整的
响应库

在请求2(
put
)中,我需要为请求2提供捕获的请求1的
responsebody
,作为
requestbody
,但某些布尔值的变化最小

在其他请求(
put
)中,我执行与请求2中相同的操作。因此,再次从请求1的捕获的
响应主体开始

因此,我采用了以下方法:

请求1-测试脚本:

pm.environment.set("Filter-get_responsebody", pm.response.json());
var res_body = pm.environment.get("Filter-get_responsebody");

console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response as captured in request 1

res_body.Filters[2].List[0].Checked = true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already with the updated boolean done in the var res_body

res_body.Filters[2].IsChanged=true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already updated by the 2 changes on var res_body

pm.environment.set("ProductList-Put-SelectFirstFuelType-RequestBody",JSON.stringify(res_body));
请求2-请求前脚本:

pm.environment.set("Filter-get_responsebody", pm.response.json());
var res_body = pm.environment.get("Filter-get_responsebody");

console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response as captured in request 1

res_body.Filters[2].List[0].Checked = true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already with the updated boolean done in the var res_body

res_body.Filters[2].IsChanged=true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already updated by the 2 changes on var res_body

pm.environment.set("ProductList-Put-SelectFirstFuelType-RequestBody",JSON.stringify(res_body));
因此,在请求2的请求前脚本中,我的原始环境变量(
Filter-get_responsebody
)获得了一个更新的值,尽管我没有直接更改它的值。相反,在第一行,我将环境变量值存储到本地脚本变量(
res\u body
)中。这样做允许我在其他请求中重用请求1的原始响应主体


所以我的问题是:为什么环境变量得到一个更新的值,而我没有直接修改它。这是postman脚本引擎中的错误吗?我已经设置了一个虚拟测试,其中使用相同的方法有2个请求,但是我没有使用JSON对象,而是使用一个字符串值在环境变量中放置和更新。在这种情况下,不会覆盖值。但是,当更新JSON时(如上述示例中所述),它会直接覆盖环境变量中的值。

变量作用域的工作方式是否提供了一些关于存储和更新方式的信息?嗯,在这种情况下不是这样的。事实是,如果我创建了一个脚本变量(在本例中为res_body)并让它存储环境变量的值,为什么在我更新本地脚本变量的值后,环境变量的值会被更新。这2个不应该有链接,对吗?你有没有在他们的GitHub帐户上向邮递员团队提出过这个问题?他们会给你一个肯定/否定的答案,如果这是一个问题,他们可能会解决它。谢谢你的意见。我正在创建一个bug;-)