测试 Postman 响应体 Json 是数组还是对象

ajg*_*ing 7 javascript postman

我有一个正在测试的 API,我希望responseBody它是一个 Json 对象(以“{”开头)。然而,由于意外事件,响应可能会作为数组返回(以“[”开头)。

如何确定responseBody使用 Postman 测试的类型(数组或对象)?

到目前为止,我所拥有的最好的是:当期待一个对象(不是一个数组)

var bodyJson = pm.response.json();
tests["Response should not be an array"] = !(bodyJson instanceof Array);
Run Code Online (Sandbox Code Playgroud)

Dan*_*ton 8

你可以只使用:

pm.test('is an Array', () => pm.expect(pm.response.json()).to.be.an('array').but.not.an('object'))
Run Code Online (Sandbox Code Playgroud)

取自ChaiJS - 它内置于本机Postman应用程序中。


eww*_*ink 4

例如你有以下 json

{
  "testA": [1, 2],
  "testB": {"a": "b"}
}
Run Code Online (Sandbox Code Playgroud)

您可以使用Array.isArray()

var bodyJson = pm.response.json();
tests["Response should not be an array"] = !Array.isArray(bodyJson['testA']); // false
//tests["Response should not be an array"] = !Array.isArray(bodyJson['testB']);  // true
Run Code Online (Sandbox Code Playgroud)

或者

var bodyJson = pm.response.json();
pm.test("is Array Test", function() {
    var notArray = !Array.isArray(bodyJson.testA) // false
    // var notArray = !Array.isArray(bodyJson.testB) // true
    pm.expect(notArray).to.eql(true);;
});
Run Code Online (Sandbox Code Playgroud)