首页 > 解决方案 > 如果在验证之前声明了 Object.prototype 函数,则 Postman JSON 模式验证失败

问题描述

我的邮递员集合中有一个模式验证测试,它验证响应是否符合模式。我就是这样做的。

var schema = 
{
  
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {....
}

    pm.test("Schema Validation - TC001", function(){

    pm.response.to.have.jsonSchema(schema);
    

});

当我只执行这个脚本时,它会成功验证响应的架构。

但是,在我的邮递员集合中,我在模式验证之前声明了一个全局函数,使用 Object.prototype() 并且我将该函数称为 _.funcABC("a","b","c")

Object.prototype.funcABC = function (var1, var2, var3) {
   console.log("test");
}

而且,当我运行整个集合时,我的模式验证失败。

在进行故障排除时,我遇到了 这个,这表明 Object.prototype 可能会干扰 JSONschema。

有没有办法克服 Object.prototype() 对 JSONschema 的干扰?到目前为止,我找不到可行的解决方案。

谢谢。

标签: postmanjsonschemapostman-pre-request-script

解决方案


是什么阻止你这样做:

pm.test('validate schema', function () {
    let temp = Object.prototype.function1
    delete Object.prototype.function1
    pm.expect(ajv.validate(schema_response, response)).to.true;
    Object.prototype.function1 = temp
})

推荐阅读