假设以下JSON是Frisby测试的一部分:
{
array: ["1", "2", "3"]
}
字符串数组可以按任何顺序返回,比如["3", "1", "2"]
。
如何在不期待订单的情况下期待上面定义的数组?
我试过了
.expectJSON('array.?', "1")
.expectJSON('array.?', "2")
.expectJSON('array.?', "3")
但这不是有效的语法,并发生以下错误:
TypeError: Expected valid JavaScript object to be given, got undefined
答案 0 :(得分:2)
我遇到了同样的问题,最后弄明白了。使用.afterJSON(),您将能够使用Jasmine的expect语法在JSON对象上执行所需的所有验证。
对于您的示例,脚本将如下所示:
.afterJSON(function(json){
expect(json.array).toContain('1');
expect(json.array).toContain('2');
expect(json.array).toContain('3');
})
答案 1 :(得分:1)
此 .expectJSON('array。?',“1”)
变为 .expectJSON('?',{ 数组:(不知道如何做这部分) })强>
但是你应该能够理解为什么测试现在失败了...抱歉不是很好的frisby; p来这里寻找帮助。
答案 2 :(得分:1)
以文本而不是对象的形式读取响应,并在文本中查找所需的数组项。 IE浏览器。 .expectBodyContains(' 1') .expectBodyContains(' 2') .expectBodyContains(' 3')
现在你必须小心,你有多个具有相同可能值的数组,但是使用JSON.stringify和简单的字符串操作,你应该能够隔离所需的数组。
答案 3 :(得分:0)
测试数组中的某些对象:
.expectJSON('array.?', '1')
.expectJSON('array.?', '2')
.expectJSON('array.?', '3')
根据the docs。