Frisby:测试对象中至少有一个字段具有正确的数据

Frisby: test that at least one of the fields in an object has the correct data

我需要用 Frisby 测试 3 个地址中至少有一个有数据并且不为空。下面是当前返回的内容:

  { physicalAddress: null,
  postalAddress: 
   { addressNumber: 1234,
     addressLine1: 'BlaBla 1',
     addressLine2: 'BlaBla',
     addressLine3: null,
     addressLine4: null,
     postalCode: '1234',
     country: 'BlaBla',
    },
  emailAddress: null}

我想编写一个测试,如果这些地址类型中的一种以上 returns 具有正确的数据,该测试就会通过。

像这样:(也许我可以用一些聪明的东西来代替'^?^?^',如果它是一个数组我本来可以使用'?'。

.expectJSONTypes('^?^?^', {
    addressNumber: Number,
    addressLine1: String,
    addressLine2: String,
    postalCode: String,
    country: String
})

如果有一个结构更好的响应,其中所有地址都到达一个数组,这可能会更容易。

但是,对于您获得的响应类型,解决方案是使用 afterJSON() 和 jasmine-node 匹配器,如下所示:

.afterJSON(function(obj){
    expect(obj.addr1 =! null || obj.addr2 =! null || obj.addr3 =! null).toBe(true);
})