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 并不真正支持一种equals方法,甚至是toString我习惯于使用 Java 的方法。

要打印变量的详细信息,以下是一种相当不错的方法:

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

如果不使用 GJS,可以使用 Console.log 代替打印。JSON stringify 将对象转换为其 JSON 表示形式(作为字符串)。出于类型检查的目的,它并不准确,但如果这不是您关心的问题,那么它工作得很好。

于 2013-07-09T16:17:08.313 回答