Javascript 飞盘包含无序列表
假设以下JSON是飞盘测试的一部分:Javascript 飞盘包含无序列表,javascript,arrays,node.js,jasmine-node,frisby.js,Javascript,Arrays,Node.js,Jasmine Node,Frisby.js,假设以下JSON是飞盘测试的一部分: { array: ["1", "2", "3"] } 字符串数组可以按任何顺序返回,例如[“3”、“1”、“2”] 我怎么能期望上面定义的数组而不期望订单 我试过了 .expectJSON('array.?', "1") .expectJSON('array.?', "2") .expectJSON('array.?', "3") 但这不是有效语法,出现以下错误: TypeError: Expected valid JavaScript obj
{
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
要测试阵列中的某些对象,请执行以下操作:
.expectJSON('array.?', '1')
.expectJSON('array.?', '2')
.expectJSON('array.?', '3')
根据。测试阵列中的某些对象:
.expectJSON('array.?', '1')
.expectJSON('array.?', '2')
.expectJSON('array.?', '3')
根据。你弄明白了吗?我想我有点晚了,但我很确定这是因为.expectJSON需要一个JSON对象 这个 .expectJSON('array.?',“1”) 变成 .expectJSON(“?”{ 数组:(不确定如何执行此部分) })
但是你应该能够理解为什么现在测试失败了。。。对不起,现在还没有一个很棒的飞盘;p自己来这里寻求帮助。你明白了吗?我想我有点晚了,但我很确定这是因为.expectJSON需要一个JSON对象 这个 .expectJSON('array.?',“1”) 变成 .expectJSON(“?”{ 数组:(不确定如何执行此部分) })
但是你应该能够理解为什么现在测试失败了。。。对不起,现在还没有一个很棒的飞盘;p自己来这里寻求帮助。将响应读为文本而不是对象,并在文本中查找所需的数组项。 即。 .expectBodyContains('1') .expectBodyContains('2') .expectBodyContains('3')
现在您必须小心,因为您有多个具有相同可能值的数组,但是使用JSON.stringify和简单的字符串操作,您应该能够隔离所需的数组。将响应作为文本而不是对象读取,并在文本中查找所需的数组项。 即。 .expectBodyContains('1') .expectBodyContains('2') .expectBodyContains('3')
现在您必须小心,因为您有多个具有相同可能值的数组,但是使用JSON.stringify和简单的字符串操作,您应该能够隔离所需的数组。我遇到了相同的问题,并最终解决了这个问题。通过使用.afterJSON(),您将能够使用Jasmine的expect语法对JSON对象执行所有需要的验证 对于您的示例,脚本如下所示:
.afterJSON(function(json){
expect(json.array).toContain('1');
expect(json.array).toContain('2');
expect(json.array).toContain('3');
})
我也遇到了同样的问题,最后终于弄明白了。通过使用.afterJSON(),您将能够使用Jasmine的expect语法对JSON对象执行所有需要的验证 对于您的示例,脚本如下所示:
.afterJSON(function(json){
expect(json.array).toContain('1');
expect(json.array).toContain('2');
expect(json.array).toContain('3');
})
排序并比较?@thefourtheye,我如何在Frisby中对请求结果对象进行排序?我真的很抱歉。我不知道Frisby,因为问题没有标记为Frisby,所以我保留了一般的方法。谢谢你标记它Frisby.js。我找不到标记,也无法创建标记。请对它们进行排序并进行比较?@thefourtheye,我如何在Frisby中对请求结果对象进行排序?我真的很抱歉。我不知道Frisby,因为问题没有标记为Frisby,所以我保留了一般的方法。谢谢你标记它Frisby.js。我找不到标记,也无法创建标记。这里的问题是expectJSON希望“1”是JSON,而不是对象。我看我看错了你的问题,array。?不过应该可以。我将在GitHub上打开一个问题。这里的问题是expectJSON希望“1”是JSON,而不是对象。我看我看错了你的问题,array。?不过应该行得通。我会在GitHub上提出一个问题。不,我实际上并没有找到一个真正的解决方案。我将把这项工作作为一个答案发布出来。不,我实际上没有找到一个真正的解决办法。我会把这篇文章作为一个答案贴出来。