我一直在玩球拍和架子我正在将我的小静态站点生成器移植到Racket和编写单元测试的过程中,遇到了这个奇怪的问题。
#lang racket
(require (planet esilkensen/yaml:2:1))
(require rackunit)
(define some-yaml
(string->yaml " - name : ding"))
(check-equal? some-yaml '(#hash(("name" . "ding"))) )
有人能给我解释一下为什么测试失败,输出如下:
Welcome to DrRacket, version 5.3.3 [3m].
Language: racket; memory limit: 128 MB.
--------------------
FAILURE
name: check-equal?
location: (#<path:/home/ding/Documents/racket/blog-generator> 7 0 119 45)
expression: (check-equal? x '(#hash(("name" . "ding"))))
actual: (#hash(("name" . "ding")))
expected: (#hash(("name" . "ding")))
最佳答案
这与可变哈希和不可变哈希有关以下测试将通过:
(check-equal? some-yaml (list (make-hash '(("name" . "ding")))))
其中
make-hash
是可变哈希构造函数。正如Eli所提到的,可变和不可变散列以相同的方式打印是令人困惑的,所以我报告了一个bug。