問題のオブジェクトにスカラー値(文字列や数値などの単純な値)のみが含まれているアサーションメソッドを作成しようとしています。 JSON.stringify()を使用しても問題ありません。オブジェクトのアサーションを書く
例はPASSED:
var expected = {foo: 5, bar: 6};
var actual = {foo: 5, bar: 6}
objectAssert(actual, expected, 'detects that two objects are equal');
// console output:
// passed
例がFAILED:
var expected = {foo: 6, bar: 5};
var actual = {foo: 5, bar: 6}
objectAssert(actual, expected, 'detects that two objects are equal');
// console output:
// FAILED [my test] Expected {"foo":6,"bar":5}, but got {"foo":5,"bar":6}
ここに私の機能はこれまでのところです:私はここに行方不明です何
function objectAssert(actual, expected, testName) {
if(actual !== expected){
console.error("FAIL [" + testName + "] Expected \"" + expected + ", \" but got \"" + actual + "\"");
} else {
console.info("SUCCESS [" + testName + "]");
}
}
任意のアイデア?
あなたは '==='や '=='オブジェクトの内容を比較するために使用することはできません。オブジェクトを比較するときには、メモリ内の同じ場所にあるかどうかをテストするだけです。 – Barmar
「私はここで何が分からないの?何が欠けていると思いますか? – Quentin
@Barmar '==='はアイデンティティ操作です。オブジェクトが同じメモリ位置になければならないということではありません。それはオブジェクトが同じタイプでなければならないことを意味します。 –