【问题标题】:How to disable stack traces in AVA and show my own error messages on error如何在 AVA 中禁用堆栈跟踪并在错误时显示我自己的错误消息
【发布时间】:2023-03-29 23:35:01
【问题描述】:

我使用 ava 在 JavaScript 中测试我的 Scheme 解释器,我不想在每个失败的断言上都有堆栈跟踪,我希望有一个自定义报告器来显示哪个测试失败以及为什么而不是显示错误通常指向 evaluator 中的同一行。

我可以轻松编写显示失败测试的函数(我可以编写一个宏来显示测试的表达式),但我无法摆脱不相关的 JavaScript 代码的相当大的堆栈跟踪。只有当我的 JavaScript 代码抛出异常时,我才希望有堆栈跟踪。

我不确定,但我认为 t.is 在失败时抛出异常。我想告诉我的测试它们失败了,但不要抛出任何异常,除非我可以有一个钩子来显示 Scheme 堆栈跟踪而不是 JavaScript。

这里我有消息显示哪个断言失败(string<? "123" "123") 应该根据规范返回#t。突出显示的代码只是函数调用。几乎所有东西都是函数(比如(string? "foo")

我使用 Ava,所以我不需要编写自己的框架,这需要花费数周时间来编写。 Ava 也有代码覆盖率,我的项目是 JavaScript,即使我的测试是在 Scheme 中。

【问题讨论】:

    标签: javascript ava


    【解决方案1】:

    您强调了应该是测试失败的根源,而不是过长的堆栈跟踪。如果你有一个小的复制品,如果你能打开一个 GitHub 问题会很好。虽然我们不希望设置禁用失败的显示,但我们也不应该显示废话。

    【讨论】:

    • 这是特殊情况,因为我正在测试的部分代码不是 JavaScript。如果有一个钩子可以拦截并显示自己的堆栈跟踪,那就太好了,在这我想看到我的方案堆栈跟踪,除非它是我的代码中的异常。堆栈相当大。很难重现,因为正如我所说,这是我测试不同语言时的特殊情况,但我可以共享指向我的 repo 的链接,但所有单元测试都是用 Scheme (lisp) 编写的。
    • 我创建了一个问题github.com/avajs/ava/issues/2465
    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2011-08-12
    • 2015-08-04
    相关资源
    最近更新 更多