gpt4 book ai didi

purescript - 如何在 Purescript 测试中跟踪失败的断言

转载 作者:行者123 更新时间:2023-12-04 09:36:21 27 4
gpt4 key购买 nike

我正在使用 Purescript 做第一步并复制 "hello world" app .
测试通过。我故意破坏了测试。

module Test.Main where

import Prelude
import Effect (Effect)
import Euler (answer)
import Test.Assert (assert)

main :: Effect Unit
main = do
assert (answer == 233161)

报告了手工错误,但错误报告的质量让我担心,因为它无论如何都不能帮助发现错误。
有一个详细的 JS 堆栈跟踪,没有任何对原始文件或 Purescript 模块/函数的引用!
这是一个带有 1 个测试的 super 简单的应用程序,但我应该如何在一个真正的应用程序的无数测试的大海捞针中找到那根针呢?
spago test
[info] Installation complete.
Compiling Test.Main
[info] Build succeeded.
/home/dan/demo/pure-script/1/output/Test.Assert/foreign.js:6
if (!success) throw new Error(message);
^

Error: Assertion failed
at Object.main (/home/dan/demo/pure-script/1/output/Test.Assert/foreign.js:6:27)
at Object.<anonymous> (/home/dan/demo/pure-script/1/.spago/run.js:3:32)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:282:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
[error] Tests failed: exit code: 1

最佳答案

正如您可能从 README 中推断的那样的 purescript-assert , Test.Assert模块只是实际测试库的作者的 super 基本断言库(因为他们不能使用自己的库而不引起循环依赖)。
因此,它不应该提供非常好的错误堆栈和位置信息。使用 assert 的包通常会在两者之间进行大量登录:

main = do
Console.log "Testing answer"
Console.log "assert answer is 42"
assert $ answer == 42

Console.log "assert answer is answer to everything"
assert $ answer `isAnswerTo` "everything"
我建议使用 purescript-spec对于更严重的事情。不幸的是,PureScript 的调试和测试故事并不是最好的,但该语言在其他方面确实很出色。

关于purescript - 如何在 Purescript 测试中跟踪失败的断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62566799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com