Frisby expectJSON 包含无序列表
Frisby expectJSON containing unordered list
假设以下 JSON 是 Frisby 测试的一部分:
{
array: ["1", "2", "3"]
}
字符串数组可以 return 以任何顺序排列,例如 ["3", "1", "2"]
。
如何在不期望顺序的情况下期望上面定义的数组?
我试过了
.expectJSON('array.?', "1")
.expectJSON('array.?', "2")
.expectJSON('array.?', "3")
但这不是有效的语法,会出现以下错误:
TypeError: Expected valid JavaScript object to be given, got undefined
测试数组中的某些对象:
.expectJSON('array.?', '1')
.expectJSON('array.?', '2')
.expectJSON('array.?', '3')
根据the docs。
你想出来了吗?我想我有点晚了,但是,我很确定这是因为 .expectJSON 期待一个 JSON 对象。
这个
.expectJSON('array.?', "1")
成为
.expectJSON('?', {
阵列:(不知道如何做这部分)
})
但是您应该能够理解为什么现在测试失败了...抱歉,飞盘还不是很好 ;p 我自己来这里寻求帮助。
以文本而不是对象的形式读取响应,并在文本中查找所需的数组项。
IE。
.expectBodyContains ('1')
.expectBodyContains ('2')
.expectBodyContains ('3')
现在您必须小心,因为您有多个具有相同可能值的数组,但是使用 JSON.stringify 和简单的字符串操作,您应该能够隔离所需的数组。
我遇到了同样的问题,终于弄明白了。使用 .afterJSON(),您将能够使用 Jasmine 的期望语法对 JSON 对象执行所有您想要的验证。
对于您的示例,脚本将如下所示:
.afterJSON(function(json){
expect(json.array).toContain('1');
expect(json.array).toContain('2');
expect(json.array).toContain('3');
})
假设以下 JSON 是 Frisby 测试的一部分:
{
array: ["1", "2", "3"]
}
字符串数组可以 return 以任何顺序排列,例如 ["3", "1", "2"]
。
如何在不期望顺序的情况下期望上面定义的数组?
我试过了
.expectJSON('array.?', "1")
.expectJSON('array.?', "2")
.expectJSON('array.?', "3")
但这不是有效的语法,会出现以下错误:
TypeError: Expected valid JavaScript object to be given, got undefined
测试数组中的某些对象:
.expectJSON('array.?', '1')
.expectJSON('array.?', '2')
.expectJSON('array.?', '3')
根据the docs。
你想出来了吗?我想我有点晚了,但是,我很确定这是因为 .expectJSON 期待一个 JSON 对象。
这个 .expectJSON('array.?', "1")
成为 .expectJSON('?', { 阵列:(不知道如何做这部分) })
但是您应该能够理解为什么现在测试失败了...抱歉,飞盘还不是很好 ;p 我自己来这里寻求帮助。
以文本而不是对象的形式读取响应,并在文本中查找所需的数组项。 IE。 .expectBodyContains ('1') .expectBodyContains ('2') .expectBodyContains ('3')
现在您必须小心,因为您有多个具有相同可能值的数组,但是使用 JSON.stringify 和简单的字符串操作,您应该能够隔离所需的数组。
我遇到了同样的问题,终于弄明白了。使用 .afterJSON(),您将能够使用 Jasmine 的期望语法对 JSON 对象执行所有您想要的验证。
对于您的示例,脚本将如下所示:
.afterJSON(function(json){
expect(json.array).toContain('1');
expect(json.array).toContain('2');
expect(json.array).toContain('3');
})