柴 期望一个深层数组包括不使用柴不可变
Chai Expect a deep array to include not working with Chai-Immutable
AssertionError: expected 'List [ List [ 0, "a", 0, 0 ], List [ 0, 0, 0, 0 ], List [ 0, 0, 0, 0 ], List [ 0, 0, 0, 0 ] ]' to include 'a'
我用柴和chai-immutable
.
我打电话给:
expect(nextState).to.deep.include("a");
为什么这不起作用?
请注意,即使 .include() 被 chai-immutable
覆盖,它的行为就像 Chai 在本机数组上所做的一样:
考虑:
expect([
[0, "a", 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
]).to.deep.include("a");
此操作失败,并显示:
AssertionError: expected [ Array(4) ] to include 'a'
为了解决这个问题,我看到至少有两种方法可以做到这一点(据我所知),单独使用 Chai。可能还有Chai插件可以帮助您解决此问题。
使用.flatten
不可变.js List
带有.flatten()
,可以将List
矩阵扁平化为单个List
:
expect(new List([
new List([0, "a", 0, 0]),
new List([0, 0, 0, 0]),
new List([0, 0, 0, 0]),
new List([0, 0, 0, 0]),
]).flatten()).to.deep.include("a");
失败将输出如下:
AssertionError: expected 'List [ 0, "a", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]' to include 'z'
使用.satisfy
Chai 有一个.satisfy()
断言,允许更多的手动控制:
expect(new List([
new List([0, "a", 0, 0]),
new List([0, 0, 0, 0]),
new List([0, 0, 0, 0]),
new List([0, 0, 0, 0]),
])).to.satisfy(matrix => matrix.some(row => row.includes("a")));
这避免了平展被测试的值,但由于chai-immutable
不会覆盖.satisfy()
,因此失败时的输出不是太漂亮:
AssertionError: expected { Object (size, _origin, ...) } to satisfy [Function]
相关文章:
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 就地反转数组为什么不起作用
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- 传递参数数组而不更改此项
- TypeError: matrix[y].push 在尝试使用 javascript 创建 2D 数组时不是一个函数
- 局部数组变量不是数组
- Yui Get 复选框返回数组而不是布尔值
- 使用RegExp循环数组而不是for循环(Javascript)
- JavaScript 数组/循环不起作用
- Jquery数组查询不起作用
- 如何让php“json_encode”返回Javascript数组而不是Javascript对象
- 数组输入不起作用
- JavaScript的循环问题,将值插入数组将不起作用
- Javascript循环数组无限不起作用
- 为什么Angular视图中的数组表达式不起作用
- 数组长度不等于数组对象
- 数组数据不会显示在表中
- responseText数组解析不正确
- 柴 期望一个深层数组包括不使用柴不可变