frisbyjs对象数组

时间:2014-09-12 11:10:29

标签: node.js jasmine-node

我的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"
  }
}

现在我想测试数据数据的所有元素的'data'属性的类型。

我的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)

我该怎么做?

2 个答案:

答案 0 :(得分:3)

删除你的第一个参数' *'因为那意味着你期待一个阵列,

当响应是数组时,它会比较数组中的所有主题,因此您可以使用索引' 0'是' *'

答案 1 :(得分:3)

路径的每个段都被拆分。你可以在frisby / lib / frisby.js的源代码中找到

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

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

.expectJSON('data.0', {last_name: "Miras"})
.expectJSONTypes('data.0', {
    id: Number,
    first_name: String
..