首页 > 解决方案 > 如何在 AVA 中禁用堆栈跟踪并在错误时显示我自己的错误消息

问题描述

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

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

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

在此处输入图像描述

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

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

标签: javascriptava

解决方案


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


推荐阅读