This is what i am trying, but it always passes the test even for bad results.
pm.test("Schema is valid", function () {
var data = pm.response.json();
var schema = {
...
my schema
...
};
tv4.validate(data, schema);
});
The reason this doesn't work is (in short) that the underlying library used by Postman (tv4) is no longer maintained. Having come across the problem earlier today, I found a solution:
tv4.validate(data, schema, false, true)
The latter two parameters are checkRecursive and banUnknownProperties. Setting these two flags as shown above make the validation work as expected.
You may also find this code snippet useful, which reports any validation errors via the console:
pm.test("Response body is valid", function() {
var data = JSON.parse(responseBody);
var valid = tv4.validate(data, schema, false, true);
if (valid !== true) {
console.log(tv4.error);
}
pm.expect(valid).to.be.true;
});