在 Racket 中对程序使用单元测试
Using unit-testing for a procedure in Racket
如果我打电话进来 Racket/Dr。拍下以下代码:
> add1
我得到:
#<procedure:add1>
如果我使用名为 rackunit 的单元测试库,我会尝试这样做:
(require rackunit)
(check-equal? add1 #<procedure:add1>)
测试失败,出现语法错误:
read: bad syntax `#<'
为什么会这样?
对于许多类型的数据,what you write
can be read
back. But in the case of procedures you can't, and thus it gets outputted as an unreadable value。
过程相等就像不透明的结构相等:它只检查身份。如果这就是您所需要的,您仍然可以将过程存储在某个地方并使用 check-equal 吗? (例如,具有 add1 的列表将与具有 add1 的列表进行比较)。如果您需要实际检查程序在逻辑上是否相同,.
如果我打电话进来 Racket/Dr。拍下以下代码:
> add1
我得到:
#<procedure:add1>
如果我使用名为 rackunit 的单元测试库,我会尝试这样做:
(require rackunit)
(check-equal? add1 #<procedure:add1>)
测试失败,出现语法错误:
read: bad syntax `#<'
为什么会这样?
对于许多类型的数据,what you write
can be read
back. But in the case of procedures you can't, and thus it gets outputted as an unreadable value。
过程相等就像不透明的结构相等:它只检查身份。如果这就是您所需要的,您仍然可以将过程存储在某个地方并使用 check-equal 吗? (例如,具有 add1 的列表将与具有 add1 的列表进行比较)。如果您需要实际检查程序在逻辑上是否相同,