[英]Unable to check a nested object property by using the “.nested” flag and bracket notation
Chai 4和更高版本的.nested.property()
.deep.property()
在早期版本中是.deep.property()
。 我所描述的问题存在都与.nested.property()
在湾仔4或更高版本,并与.deep.property()
在之前的版本4。
我一直在尝试使用.nested
标志和方括号表示法来检查嵌套属性的值。 当我尝试寻址到数组时,它可以工作,但是如果我想通过执行"a['name']"
来寻址到对象,则它不起作用。 这是令人困惑的,因为在JavaScript中a.name
和a["name"]
都引用相同的属性,在某些情况下,由于名称的结构,我们必须使用方括号。
我在下面有一个例子。 如果运行此命令,则将看到"first expect passed"
,但不会看到"second expect passed"
因为第二个断言失败。
const { expect } = require("chai");
const obj = {
"a": ["foo", "bar"],
"b": { "foo-bar": 1},
};
expect(obj).to.have.nested.property("a[1]").equal("bar");
console.log("first expect passed");
expect(obj).to.have.nested.property("b['foo-bar']").equal(1);
console.log("second expect passed");
这不是明确记载,但问题是,柴实际上不解释,你传递给参数.property
在完全相同的方式JavaScript解释会。 人们很自然地去b['foo-bar']
因为这是你所期望的,你必须做,如果你在访问中的JavaScript代码的性质是什么,但是这不会与柴工作。 您要做的是:
expect(obj).to.have.nested.property("b.foo-bar").equal(1);
console.log("second expect passed");
.property
的括号符号基本上仅用于寻址到数组。 对于对象,即使在无效的JavaScript情况下,也必须使用点符号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.