プログラムのテストを書いています。プログラムの出力が期待どおりであることを検証する機能テストを書きたいと思います。返されるオブジェクトは、複雑な JS オブジェクト (ネストされたオブジェクト、多くのプロパティなど) です。
これが明らかに必要なものと一致することをテストしたいと思います。これまでは、オブジェクトと期待される結果を「閲覧」し、各プロパティとネストされた各オブジェクトをチェックしていました。これは非常に面倒で、オブジェクトだけに基づいてすべてのテストを「ビルド」するライブラリがあるかどうか疑問に思っていました。たとえば、このようなもの。
var res = {
a: {
alpha: [1,2,3],
beta: "Hello",
gamma: "World"
},
},
b: 123,
c: "It depends"
}
};
var expectation = {
a: {
alpha: [1,2,4],
beta: "Hello",
gamma: "World"
},
},
b: 123,
c: "It depends"
}
};
assert(res, expectation) // -> Raises an error because res[a][b][2] is different from expectation[a][b][2].
[例では、オブジェクトの複雑さを単純化しています...]
2 つのオブジェクトが異なることを伝えるだけでなく、何が違うのかを伝えるのに十分なほどスマートなコードが必要であるという事実を主張する必要があります。私たちは今、深い平等について考えていますが、実際に違いを教えてくれるものは何も見つけていません。