Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 飞盘包含无序列表_Javascript_Arrays_Node.js_Jasmine Node_Frisby.js - Fatal编程技术网

Javascript 飞盘包含无序列表

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

假设以下JSON是飞盘测试的一部分:

{
    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上提出一个问题。不,我实际上并没有找到一个真正的解决方案。我将把这项工作作为一个答案发布出来。不,我实际上没有找到一个真正的解决办法。我会把这篇文章作为一个答案贴出来。