Chai 4 et .nested.property()
était .deep.property()
dans les versions antérieures. La question que je décris est présent à la fois avec .nested.property()
Chai 4 ou version ultérieure et avec .deep.property()
dans les versions antérieures à 4.Impossible de vérifier une propriété d'objet imbriqué en utilisant le drapeau ".nested" et la notation de parenthèse
J'ai essayé d'utiliser la notation du drapeau .nested
et le support pour vérifier la valeur d'un imbriquée propriété. Lorsque j'essaie de m'adresser dans des tableaux, cela fonctionne, mais si je veux m'adresser à un objet en faisant "a['name']"
, cela ne fonctionne pas. Ceci est déroutant car, en JavaScript, a.name
et a["name"]
feraient tous deux référence à la même propriété, et dans certains cas, nous devions utiliser les parenthèses en raison de la structure du nom.
J'ai un exemple du problème ci-dessous. Si vous exécutez cela, vous verrez "first expect passed"
, mais vous ne verrez pas "second expect passed"
car la deuxième assertion échoue.
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");