在Rackunit中,我知道如何断言抛出异常:
#lang racket
(module+ test
(require rackunit)
(check-exn exn:fail:contract? (lambda () (3 + 4))))然而,我无法找到一种方法来断言更具体的东西。从在球拍中的异常层次中的角度看,exn:fail:contract可能意味着许多事情:错误的原则,除以零.
我要在测试中断言,这一特殊例外情况如下:
; application: not a procedure;
; expected a procedure that can be applied to arguments在它打印的信息中。你是怎么做到这一点的?
发布于 2016-02-01 21:33:14
谓词不必是内置的异常谓词。你可以用你自己的,像这样:
(check-exn (lambda (e)
(and (exn:fail:contract? e)
(regexp-match #rx"not a procedure" (exn-message e))))
(lambda () (3 + 4)))Rackunit的check-exn还接受regexp代替异常谓词。在这种情况下,它检查消息与regexp匹配的exn:fail (或其任何子类型)。所以你也可以这样写:
(check-exn #rx"not a procedure" (lambda () (3 + 4)))https://stackoverflow.com/questions/35137239
复制相似问题