gpt4 book ai didi

unit-testing - chicken scheme srfi-64 测试错误问题

转载 作者:行者123 更新时间:2023-11-28 20:39:11 24 4
gpt4 key购买 nike

我正在使用 chicken scheme 版本 4.9.0.1 并且正在开发一个使用单元测试包 srfi-64 的单元测试套件。

我在这个单元测试包中遇到测试错误问题。

问题的一个最小示例:

(require-extension srfi-64)(test-begin "error testing")(define (exn-tester)  (error "What does srfi-64 want?"))(test-error "the exn-tester" 'exn (exn-tester))(test-end)

Results in the report:

%%%% Starting test error testing
Group begin: error testing
Test begin:
test-name: "the exn-tester"
Test end:
result-kind: fail
actual-error: #<condition: (exn)>
expected-error: exn
Group end: error testing
# of unexpected failures 1

问题显然在我的测试错误中,因为我不知道如何以测试错误理解的形式表示异常。我已经尝试了列出的实际错误的多种变体,但没有成功。

具体来说,我应该为测试错误调用?

最佳答案

SRFI 规范本身基本上说“它是依赖于实现的”,但在查看代码后,您似乎可以简单地向它传递一个谓词:

(require-extension srfi-64)
(test-begin "error testing")
(define (exn-tester)
(error "What does srfi-64 want?"))
(test-error "the exn-tester" (condition-predicate 'exn) (exn-tester))
(test-end)

请注意,在 CHICKEN 社区中,test egg是事实测试鸡蛋。但是,它目前无法测试特定的异常类型。我曾经为 Postgres egg 的测试套件编写过这个宏:

(define-syntax test-error*
(syntax-rules ()
((_ ?msg (?error-type ...) ?expr)
(let-syntax ((expression:
(syntax-rules ()
((_ ?expr)
(condition-case (begin ?expr "<no error thrown>")
((?error-type ...) '(?error-type ...))
(exn () (##sys#slot exn 1)))))))
(test ?msg '(?error-type ...) (expression: ?expr))))
((_ ?msg ?error-type ?expr)
(test-error* ?msg (?error-type) ?expr))
((_ ?error-type ?expr)
(test-error* (sprintf "~S" '?expr) ?error-type ?expr))))

按如下方式使用:

 (test-error* "Result value error for out of bounds row"
(exn postgresql bounds)
(value-at (query conn "SELECT NULL") 0 1))

(exn postgresql bounds) 告诉测试接受exnpostgresql 类型的复合条件(有关更多信息,请参阅 SRFI-12) 边界。它可以有其他类型,但在此示例中,必须存在这三种类型才能通过测试。

关于unit-testing - chicken scheme srfi-64 测试错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40669384/

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