2

我的 nodejs 服务器响应一个包含如下对象数组的对象:

{
  error: false
  message: "get dispatchers successful"
  data: [1]
  0: {
    id: 1
    first_name: "Brenth Andrew J."
    last_name: "Miras"
    contact_number: null
    email: "brenthmiras2@gmail.com"
    address: null
    image: null
    password: "bajmiras"
    created: "2014-09-12T10:24:06.000Z"
  }
}

现在我想测试数组数据的所有元素的“数据”属性的类型。

我的 frisby 测试如下所示:

//expect these types of response
.expectJSONTypes('*', {
  error: Boolean,
  message: String,
  data: {
    id: Number,
    first_name: String,
    last_name: String,
    contact_number: String,
    email: String,
    address: String,
    image: String,
    password: String,
    created: String
  }
})

我得到这个错误:

TypeError: Expected '*' to be Array (got 'object' from JSON response)

我该怎么做?

4

2 回答 2

3

删除您的第一个参数 '*' 因为这意味着您需要一个数组,

当响应是一个数组时,它将比较数组中的所有项目,因此您可以使用索引 '0' 而不是 '*'

于 2014-09-29T19:29:53.577 回答
3

路径的每一段由 分割。你可以在 frisby/lib/frisby.js 的源代码中找到

  _.each(path.split('.'), function(segment) {

所以做你的测试将是这样的:

.expectJSON('data.0', {last_name: "Miras"})
.expectJSONTypes('data.0', {
    id: Number,
    first_name: String
..
于 2014-10-20T10:02:56.020 回答