0

JsUnit を使用してassertEquals、一連のテストが失敗したときに、失敗した理由に関する有用な情報を出力するように、関数を利用しようとしています。

私の現在の状況は次のとおりです。

let actual = some_method_call ();
let expected = [
        {num: 1, file: f, id: "apples"},
        {num: 6, file: f, id: "bananas"},
        {num: 9, file: f, id: "accurate_comparison"}
        ];
assertEquals (expected, actual);

残念ながら、例外を繰り返し処理すると、次のものが残ります。

isJsUnitException: true
comment: null
jsUnitMessage: Expected [object Object],[object Object],[object Object] (object) but was 42 (number)
stackTrace: > JsUnitException:307
> _assert:113
> assertEquals:150
> testStealBitcoins:105
> anonymous:159

予想されるオブジェクトのコンテンツをインテリジェントに表示するために、 Expected行を取得するにはどうすればよいですか? どのソリューションも、ネストされたオブジェクトのさまざまなレイヤーに適用できる必要があります。また、これは失敗したテストデバッグにアプローチする間違った方法ですか?

4

1 に答える 1

2

assertEquals のラッパーを作成すると便利で簡単です。私が理解できなかった秘訣は、Javascript は、Java で慣れ親しんだequalsメソッドやメソッドtoStringを真にサポートしていないということでした。

変数の詳細を出力するには、次の方法がかなり適切です。

if (typeof x === "object" && x !== null) {
    print (JSON.stringify(x));
}
else {
    print (String(x));
}

GJS が使用されていない場合は、print の代わりに Console.log を使用できます。JSON stringify は、オブジェクトをその JSON 表現に (文字列として) 変換します。型チェックのために正確ではありませんが、それが問題でなければ、これでうまくいきます。

于 2013-07-09T16:17:08.313 に答える